Opera erkennt dynamisch erstellte Formularelemente nicht
Jan
- javascript
Hy,
bei der folgenden Demo-Funktion werden 3 Checkboxen dynamisch erstellt.
Mit alert wird anschliessend die Anzahl der Formularelemente ermittelt. Firefox und IE melden 3 Elemente - Opera (7.23) meldet dagegen 0 Elemente!
Weiss jemand, warum Opera hier die Formularelemente nicht erkennt und / oder wie man ihn ggf. dazu bringen kann, dass ?
Eventuell handelt es sich ja auch um ein Problem, dass sich mit späteren Versionen des Opera erledigt hat.
Damit könnte ich zur Not auch leben ... na ja, überleben :-/.
Vielen Dank für Ratschläge Mit Grüßen Jan
******************************************
******************************************
<html>
<head>
<title>-</title>
<script type="text/javascript">
<!--
function erstelle_checkboxen()
{
for (i = 0; i < 3; i++)
{
ebene = document.getElementById('formular');
boxen = document.createElement('span');
boxen.innerHTML = "<input type='checkbox' style='display:block'>";
ebene.appendChild(boxen);
}
alert(document.formularname.elements.length);
}
//-->
</script>
</head>
<body onload="erstelle_checkboxen()">
<form name="formularname" id="formular" action="">
</form>
</body>
</html>
******************************************
******************************************
Hallo Jan.
Mit alert wird anschliessend die Anzahl der Formularelemente ermittelt. Firefox und IE melden 3 Elemente - Opera (7.23) meldet dagegen 0 Elemente!
[…]
Eventuell handelt es sich ja auch um ein Problem, dass sich mit späteren Versionen des Opera erledigt hat.
Das ist sehr wahrscheinlich. Mit deinem Code erhalte ich in meinem Opera 9 TP2 ebenfalls „3“ als Ausgabe; die Elemente erscheinen auch.
boxen.innerHTML = "<input type='checkbox' style='display:block'>";
Hat es einen bestimmten Grund, warum du hier nicht das input-Element per createElement und appendChild in das span-Element einhängst?
<body onload="erstelle_checkboxen()">
Wenn du deine Struktur vom JS trennen möchtest, solltest du auf das onload-Attribut verzichten und statt dessen lieber im Scriptbereich window.onload = function() { /* Dein Code */} notieren.
Einen schönen Montag noch.
Gruß, Ashura
Dank Ashura!
Ich hatte sowas vermutet !
Hat es einen bestimmten Grund, warum du hier nicht das input-Element per createElement und appendChild in das span-Element einhängst?
Das Eine ist mir ertraut, das Andere nicht - und; in der "extended version" dieses Scriptes erscheinen neben den Checkboxen noch eine Reihe von <div>-Blöcken und Text, die/der jeweils unterschiedlich formatiert wird. Ich glaube, dass es umständlicher wäre, den oben genannten Weg zu wählen. ODER irre ich ?
Wenn du deine Struktur vom JS trennen möchtest, solltest du ...
Jau, mach ich ;-)
MFG Jan
Hallo Jan.
Hat es einen bestimmten Grund, warum du hier nicht das input-Element per createElement und appendChild in das span-Element einhängst?
Das Eine ist mir ertraut, das Andere nicht
Und dennoch erstellst du das span-Element mit createElement und appendChild?
Ich glaube, dass es umständlicher wäre, den oben genannten Weg zu wählen. ODER irre ich ?
Im Vergleich zu innerHTML sind die DOM-Methoden in den meisten Fällen zwar umständlicher, dafür bieten letztere aber auch weitaus mehr Kontrolle. Dies kannst du z. B. in diesem Thread nachvollziehen.
Einen schönen Montag noch.
Gruß, Ashura