Listenelement ersetzen funktioniert nicht
Bud Gerlad
- javascript
Hallo Leute,
ich habe ein Problem, aber ich werde meine Frage auf das nötigste reduzieren. Und zwar:
ich habe ein Array im HTML Dokument:
"var TextArray = new Array();"
In das Array speichere ich Strings. Sie werden auch tatsächlich gespeichert - ich habe es überprüft. Nun möchte ich ein Element aus diesem Array z.B. einem Listenobjekt zu ordnen, ungefähr so:
"document.getElementsByTagName("li")[0].firstChild.nodeValue = TextArray[1];"
Das Listenelement will ich sozusagen mit dem Arrayelement ersetzten. Leider bekomme ich im Listenelement "undefined" angezeigt.
Was ich wirklich niht verstehe und was meine Frage ist:
"document.getElementsByTagName("li")[0].firstChild.nodeValue = "Hallo"" funktioniert aber ein Element aus dem Array was eigentich auch ein String ist, funktioniert nicht. Warum nicht bzw. muss ich was anderes schreiben als "document.getElementsByTagName("li")[0].firstChild.nodeValue"?
Ich sitze schon seit 4 Stunden daran und wäre dankbar auf eine Antwort oder idee.
MfG
Bud
Hi,
In das Array speichere ich Strings. Sie werden auch tatsächlich gespeichert - ich habe es überprüft.
wo bzw. wann hast Du es überprüft?
"document.getElementsByTagName("li")[0].firstChild.nodeValue = TextArray[1];"
Was passiert, wenn Du alles von "document" bis "=" durch "alert(" und das abschließende Semikolon durch ");" ersetzt?
Cheatah
Hi,
In das Array speichere ich Strings. Sie werden auch tatsächlich gespeichert - ich habe es überprüft.
wo bzw. wann hast Du es überprüft?
"document.getElementsByTagName("li")[0].firstChild.nodeValue = TextArray[1];"
Was passiert, wenn Du alles von "document" bis "=" durch "alert(" und das abschließende Semikolon durch ");" ersetzt?
Cheatah
Wenn ich das mache was du sagst, kommt natürlich den Text angezeigt. Wenn ich die Semikolon entferne bekomme ich ein popupfenster angezeigt mit undefinied.
ich tue mal den kompletten quellcode rein, dann könnt ihr mein Problem besser nachvollziehen:
<html>
<head>
<title>test</title>
<script type="text/javascript">
TextArray = new Array();
var i = 0;
while (i < document.getElementsByTagName("li").lenght) {
TextArray[i] = document.getElementsByTagName("li")[i].firstChild.nodeValue;
i++;
}
function Wechsel()
{
//alert("TextArray[2];")
document.getElementsByTagName("li")[1].firstChild.nodeValue = TextArray[2];
}
function Start()
{
document.all.style1.style.color = "blue";
document.all.style2.style.color = "red";
document.all.style3.style.color = "yellow";
document.all.style4.style.color = "green";
}
</script>
</head>
<body onLoad="Start()">
<ol>
<li id="style1">Text1</li>
<li id="style2">Text2</li>
<li id="style3">Text3</li>
<li id="style4">Text4</li>
</ol>
<a href="javascript:Wechsel()">Methode1</a>
</body>
</html>
nachtrag:
ich habe natürlich var "TextArray = new Array();" stehen statt "TextArray = new Array();". hatte es nur kurz weg gemacht zum testen
MfG
Bud
Moin
wenn dein JavaScript dies abarbeitet:
while (i < document.getElementsByTagName("li").lenght) {
TextArray[i] = document.getElementsByTagName("li")[i].firstChild.nodeValue;
i++;
}
existiert noch kein li, denn die werden erst hier:
<ol>
<li id="style1">Text1</li>
<li id="style2">Text2</li>
<li id="style3">Text3</li>
<li id="style4">Text4</li>
</ol>
erschaffen.
Setz also deine while-Schleife (besser noch eine for-Schleife) mit in die start-Funktion.
Gruß
rfb
Moin
wenn dein JavaScript dies abarbeitet:
while (i < document.getElementsByTagName("li").lenght) {
TextArray[i] = document.getElementsByTagName("li")[i].firstChild.nodeValue;
i++;
}existiert noch kein li, denn die werden erst hier:
<ol>
<li id="style1">Text1</li>
<li id="style2">Text2</li>
<li id="style3">Text3</li>
<li id="style4">Text4</li>
</ol>
erschaffen.Setz also deine while-Schleife (besser noch eine for-Schleife) mit in die start-Funktion.
Gruß
rfb
Du hast recht. Wenn die Schleife abgearbeitet wird gibs die Elemente noch nicht. Ich habe jetzt das Array Global direkt am anfang deklariert und initialisiert aber die Schleife an sich wird erst mit dem Button gestartet. Danke für den Tip. Es lohnt sich wieder zu leben ;-)
Vielen dank..
Gruß
Bud
Hello out there!
aber ein Element aus dem Array was eigentich auch ein String ist, funktioniert nicht.
Doch.
muss ich was anderes schreiben als "document.getElementsByTagName("li")[0].firstChild.nodeValue"?
Nein.
Aber was steht in TextArray[1] drin?
See ya up the road,
Gunnar