joke.innerHTML = `<div class="random_joke" id="joke">
Id nie może być takie same dla wszystkich pobranych elementów. To chyba miało być id pobrane dynamicznie z api?
Twoje api zwraca za każdym razem jeden element, więc wystarczy go dodać do tego co już masz wcześniej pobrane. Nie rozkminiłem Twojej koncepcji, ale w uproszczeniu wygląda to tak:
<button class="button">klik</button>
<div id="joke"></div>
const url = 'https://api.icndb.com/jokes/random';
//get jokes by button
const button = document.querySelector(".button");
button.addEventListener("click", function (e) {
e.preventDefault();
createAllSection();
});
// chodzi mi własnie o ten fragment kodu - pobieram tutaj text/żart ale tylko jeden. A gdybym chciała ich więcej?
const getRandomJokes = () => {
const req = new XMLHttpRequest();
req.open("GET", url);
req.onload = function() {
if (this.status === 200) {
const value = JSON.parse(this.responseText);
//random jokes
const joke = document.querySelector("#joke");
joke.innerHTML += `<div class="random_joke" id=${value.value.id}>
<p>id=${value.value.id}</p>
<h3> ${value.value.joke} </h3></div>`;
}
}
req.send();
}
const createAllSection = () => {
getRandomJokes();
};