Hallo,
for (var i = 1; i < menge; i++) { document.getElementById("dynamisch").innerHTML += "<p> Instrument: " + daten[i] + ": <input type='checkbox' id='instrument_" + i + "'></p>"; for (var j=0; j<menge; j++){ if(i==instrument_num[j]){ alert("HALLO"); document.getElementById("instrument_"+i ).checked = true; } }
Ich weiß, das ist nur eine Funktion und von alleine nicht ausführbar, ...
sie ist vor allem auch sehr unsauber: Sie scheint auf zahlreiche globale Variablen zuzugreifen, die außerhalb ihres eigenen Scopes existieren. Das ist nicht im Sinne von "Kapselung", was einer der Gründe ist, Funktionen zu verwenden.
Wie ich damit rausgefunden habe, werden auch die richtigen Checkboxen abgehakt, allerdings wird das in der nächsten Iteration auch wieder rückgängig gemacht.
Works as designed.
Dein Denkfehler ist die Verwendung von innerHTML in Verbindung mit dem += Operator. Das bedeutet, du liest den momentanen Elementinhalt aus, bekommst ihn als String, hängst an diesen String etwas an, und setzt den Elementinhalt dann komplett neu. Das ist es, was mit += passiert.
Damit erzeugst du aber auch in jedem Schleifendurchlauf wieder neue, jungfräuliche checkbox-Objekte. Auch die, die schon da waren.
Manipulationen, wie du sie vorhast, sollte man besser mit den DOM-Mthoden createElement() und appendChild() oder ähnlichen Techniken machen, und nicht mit innerHTML mit all seinen Nebenwirkungen.
Wieso hast du eigentlich die Tags "datenbank" und "php" dazugewählt, die mit deiner Frage absolut nichts zu tun haben?
So long,
Martin