Schleife über getElementsByTagName("a") (IE-Bug?)
Metaphore
- javascript
Moin,
ich habe folgenden Code, der im IE 6.0 nicht funktioniert:
----------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<a href="http://www.gmx.de">Der erste</a>
<a href="http://www.yahoo.de"> </a>
<a href="http://www.hassenichjesehen.de">Der letzte</a>
<br>
Javascript-Output:<br>
<script language="JavaScript" type="text/javascript">
//Alle Links durchsuchen
var AlleLinks = document.getElementsByTagName("a");
for (var i = 0; i < AlleLinks.length; i++) {
document.write (AlleLinks[i].firstChild.nodeValue + " | " + AlleLinks[i].firstChild.nodeType + "<\/BR>");
}
</script>
</body>
</html>
----------------------------------
Das Problem ist, dass beim zweiten a-Tag (Yahoo) das Script ohne FM vom IE einfach abgebrochen wird. Die Umstände erfordern leider aber nunmal, dass ich das a-Element finde indem ich es über seinen Inhalt "Der letzte" identifiziere.
var AlleLinks = document.getElementsByTagName("a");
du kannst natürlich auch auf document.links zugreifen.
Das Problem ist, dass beim zweiten a-Tag (Yahoo) das Script ohne FM vom IE einfach abgebrochen wird.
Bist du sicher das keine Fehlermledung kommt? Bei mir kommen zwei.
Das Problem ist ein übliches Problem, du verwendest etwas ohne zu prüfen, ob es überhaupt vorhanden ist.
Struppi.
Hallo Struppi,
ja - ich bekomme keine Fehlermeldungen. Und in Opera bspw. funktioniert es. Ich habe mir das schon gedacht, dass es an dem fehlenden Child-Node liegt..... aber -
Ich hatte schon mal folgendes probiert:
...
if (AlleLinks[i].hasChildNodes){
//Zugriff auf Node
}
...
Welche FM bekommst Du denn?
okay - document.links, werde ich bevorzugen.
Schöne Grüße
Metaphore
Liebe(r) Metaphore,
ja - ich bekomme keine Fehlermeldungen.
hast Du diese denn Deinem IE abgewöhnt?
Liebe Grüße aus Ellwangen,
Felix Riesterer.
hast Du diese denn Deinem IE abgewöhnt?
Andere Fehlermeldungen bekomme ich ja auch (zum Beispiel das immer wiederkehrende Object erwartet *aargh)
Welche FMs bekommt Ihr denn?
Shcöne Grüße
Metaphore (m)
Hallo,
...
if (AlleLinks[i].hasChildNodes){
hasChildNodes ist eine Methode, also musst du eckige Klammern dahinter setzen, um diese auszuführen. Alternativ könntest du natürlich auch prüfen, ob firstChild existiert.
mfg. Daniel
--
[Experten raten von der Verwendung des Internet Explorers ab!](http://web.oesterchat.com/internet-explorer/)
[Mein SELF-stylesheet](http://danielrichter.da.funpic.de/SELFForumsCSS.html) | [Darum Firefox!](http://www.firefox-love.de/)
[Selfcode](http://forum.de.selfhtml.org/cgi-bin/selfcode.pl): [ie:{ fl:( br:> va:) ls:& fo:) rl:( n4:# ss:) de:> js:) mo:} zu:}](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%7B+fl%3A%28+br%3A%3E+va%3A%29+ls%3A%26+fo%3A%29+rl%3A%28+n4%3A%23+ss%3A%29+de%3A%3E+js%3A%29+mo%3A%7D+zu%3A%7D)
hi,
hasChildNodes ist eine Methode, also musst du eckige Klammern dahinter setzen
Du meinst runde.
gruß,
wahsaga
Du meinst runde.
Ha!
Ich danke Euch! Jetzt funktioniert es!!! *freu*
<script language="JavaScript" type="text/javascript">
//Alle Links durchsuchen
for (var i = 0; i < document.links.length; i++) {
if(document.links[i].hasChildNodes()){
document.write(i + "<\/BR>");
document.write (document.links[i].href + " | " + document.links[i].firstChild.nodeValue + "<\/BR>");
}
}
</script>
Ich beschäftige mich nur sporadisch mit JavaScript und muss sagen, dass 95% meiner Fehler immer Syntax-Fehler waren (Es hat auch sehr lange gedauert bis ich gechecked habe, dass Groß und Kleinschreibung relevant ist!!!)
Vielen Dank nochmal
Schöne Grüße
Metaphore
Hallo,
hasChildNodes ist eine Methode, also musst du eckige Klammern dahinter setzen
Du meinst runde.
Oops, ja du hast Recht. Schon doof wenn man was anderes schreibt als man denkt ;-)
mfg. Daniel