shuffle cards wird nicht ausgeführt.

Justice97

Mitglied
Hallo. Ich finde einfach nicht den Fehler, warum Shuffle nicht ausgeführt wird. Der Rest wird ausgeführt. Er will die Funktion einfach nicht ausführen. Das console.log zur Probe geht auch nicht. HTML wird generell ls erstes gelden bevor Java Script ausgeführt wird richtig? also window.onload ist eigentlich unnötig oder? liegt das Problem villeicht am window.onload im zweiten Block? Wenn ich den Codepart dort einfüge funktioniert es auch nicht. aber was in window.onload mit der anonymen funktion steht klappt.

function shuffleCards() {
console.log("Funktion wurde aufgerufen");
const deck = document.querySelector('.cardsGrundgeruest'); // Auswahl des Kartenstapels
const cards = Array.from(deck.children); // Alle Kinder (Karten) aus dem Deck holen

console.log("Vor dem Mischen:");
cards.forEach(card => {
console.log(card.className); // Gibt die Klasse (Kartenname) der Karte aus
});

// Zufälliges Mischen der Karten
for (let i = cards.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[cards, cards[j]] = [cards[j], cards]; // Karten tauschen
}

// Entferne alle Karten mit removeChild und füge sie in gemischter Reihenfolge neu hinzu
while (deck.firstChild) {
deck.removeChild(deck.firstChild); // Karten entfernen
}

cards.forEach(card => {
deck.appendChild(card); // Gemischte Karten neu einfügen
});

console.log("Nach dem Mischen:");
cards.forEach(card => {
console.log(card.className); // Gibt die Klasse (Kartenname) der Karte aus
});
}
 
HTML wird generell ls erstes gelden bevor Java Script ausgeführt wird richtig?
Das ist richtig falsch. Script-Blöcke müssen nicht im Header einer HTML-Datei definiert werden. Sie können auch am Ender des HTML stehen. Das macht man aus verschieden Gründen, meistens um die Seite schneller zu laden und damit der komplette Dom verfügbar ist wenn das Script startet. Daher ist es üblich verschiedene JS-Funktionen über einen 'window.onload'-EventHandler zu starten.
 

Zurück
Oben