Jan: Opera erkennt dynamisch erstellte Formularelemente nicht

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>

******************************************
******************************************

  1. 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

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    mathbr:del.icio.us/ mathbr:w00t/
    1. 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

      1. 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

        --
        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        mathbr:del.icio.us/ mathbr:w00t/