Jeżeli masz kod javascript "podpięty" w <head>
<script src="loteria.js"></script>
to powoduje, że kod javascript wykonuje się szybciej niż przeglądarka przetworzyła kod html, czyli ten zapis powoduje błąd
const btn = document.querySelector('button1')
const number1 = document.querySelector('number1')
użyj zdarzenia np. window.onload [ 1 ] [ 2 ]
przykład
<table width="250" height="100">
<tr>
<td>
<h3>Wylosuj liczbę 1</h3>
</td>
<td>
<input type="button" id="button1" value="Losuj">
</td>
<td>
<div id="number1"></div>
</td>
</tr>
<tr>
<td>
<h3>Wylosuj liczbę 2</h3>
</td>
<td>
<input type="button" id="button2" value="Losuj">
</td>
<td>
<div id="number2"></div>
</td>
</tr>
</table>
// loteria.js
let buttons;
window.addEventListener('load', load);
function load() {
buttons = document.querySelectorAll('[id^="button"]');
for (button of buttons)
button.addEventListener('click', randomNumber)
}
function randomNumber(e) {
const num = Math.floor((Math.random() * 100) + 1);
const id = e.target.id.replace('button', '');
document.querySelector(`#number${id}`).textContent = num;
}
P.S.
[ CSS Selector Reference ] [ Interpolacja stringów ]