[JavaScript] getElementByName Probleme im Opera + IE6+7 [behoben]

CrazySash

Well-known member
ID: 93631
L
20 April 2006
2.273
103
ZU meinem Problem:

Also ich habe mehrere Div Container, die den Namen tada haben. Diese haben jeweils noch nen title-Attribut, welches allerdings unterschiedlich ist.

So Script soll folgendes machen:

Mir alle title-Werte zurückgeben.

Jetzt zum Problem:

FF 2.0.0.6: macht das genau so wie ich das will.:p
Opera: kommt nicht mit getElementByName zurecht ("Ausgabe Es gibt 0 title")
IE 6/7: kommt nicht mit getElementByName zurecht ("Ausgabe Es gibt 0 title")

Quelltext:
HTML:
<html>
<head></head>
<body>
<div name="tada" title="13">Platzhalter 1</div>
<div name="tada" title="2435">Platzhalter 2</div>
<div name="tada" title="33">Platzhalter 3</div>
<div name="tada" title="4234">Platzhalter 4</div>
<script type="text/javascript">
<!--
i=0;
while(document.getElementsByName("tada")[i]){
    alert(document.getElementsByName("tada")[i].title)
    i++;
}

alert("Es gibt "+i+" title");

// -->
</script>
</body>
</html>
So nun die Frage: hab ich nen Denkfehler? oder ist es nur zufall, dass es im FF geht?

Freue mich über hilfe :mrgreen:
 
Zuletzt bearbeitet:
Bin auch kein JavaScript-Nerd, aber...

wenn du eh nur die Anzahl brauchst (oder ist das nur ein Test?), dann versuch's doch mal mit: document.getElementsByName("tada").length

Ansonsten ist mir deine Schleife eh nicht ganz klar.

Code:
i=0;
while(document.getElementsByName("tada")[i]){

if(document.getElementsByName("tada")[i]){
    alert(document.getElementsByName("tada")[i].title)
    i++;
}

}

Wenn du schon eine while-Schleife mit Bedingung hast.. wozu dann noch das if? 8O
 
ok, die if in der schleife is echt murks:mrgreen:

aber ansonsten bringt mich das nicht weiter. wie gesagt ausgabe ist 0 im ie und opera.

also scheint getElementByName nicht ordentlich zu laufen.
 
Du darfst auf Div Containern kein Name Attribut setzen. ich könnte mir vorstellen, dass dadurch der IE und Opera Probleme bekommen.
 
nein, daran liegt es nicht.

<p> geht auch nicht!

EDIT: wieder was dazugelernt.

das geht nur mit elementen, die auch wirklich das name als Attribut haben beispiel <a>
 
Zuletzt bearbeitet:
Doch, Renegade hat Recht. Sowohl DIV als auch P besitzen keine Name-Eigenschaft. Dadurch liefert dir getElementsByName keine Ergebnisse. Zumindest im Internet Explorer kannst du stattdessen die ID-Eigenschaft verwenden. Wie sich das im Opera verhält weiß ich allerdings nicht.

Meiner Meinung nach wäre es sowieso geschickter, mit der childNodes-Collection zu arbeiten, solange du eine so einfache Struktur hast.
 
Auch für sowas ist Prototype praktisch man macht aus dem name nen class und verwendet document.getElementsByClassName()

Bei Childnodes hat man das Problem das die z.B im Firefox und IE unterschiedlich gewertet werden. Beim einen ist ein Whitespace ein Childnode beim anderen nicht.