Ich arbeite daran zu lernen, wie man Javascript-Knoten analysiert, um Informationen auf verschiedene Arten zu sammeln.getElementsByTagName - Kann die Eigenschaft 'length' von undefined nicht lesen
Wenn ich den Code ausführen unten enthalten, alle Werke, bis ich auf Linie zu bekommen, die sagt:
for(var i = 0; i < olElements.childNodes.length; i++){
ich den Fehler: „Nicht abgefangene Typeerror: Kann Eigenschaft‚Länge‘undefinierter nicht lesen“.
Hier ist meine vollständige Skript:
<script type="text/javascript" language="JavaScript1.1">
function getNodeValue(){
var olElement = document.getElementById("toDoList");
var a = olElement.getElementsByTagName("li");
console.log("The ordered list contains " + a.length + " items.\n\n");
console.log(a[a.length - 1].lastChild.nodeValue + "\n\n");
for(var i = 0; i < olElement.childNodes.length; i++){
if(olElement.childNodes[i].nodeType == 1){
var childOf = olElement.childNodes[i];
for(var j = 0; j < childOf.childNodes.length; j++){
if(childOf.childNodes[j].nodeType == 3){
console.log(childOf.childNodes[j].nodeValue);
}
}
}
}
var oltags = document.getElementsByTagName("ol");
for(var k = 0; k < oltags.childNodes.length; k++){
if(oltags.childNodes[k].nodeType == 1){
var childOf = oltags.childNodes[k];
for(var l = 0; l < childOf.childNodes.length; l++){
if(childOf.childNodes[l].nodeType == 3){
console.log(childOf.childNodes[l].nodeValue);
}
}
}
}
}
window.onload = getNodeValue;
</script>
Die HTML ist die folgende:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Getting Node Values</title>
</head>
<body>
<h1>Things To Do</h1>
<ol id="toDoList">
<li>Mow the lawn</li>
<li>Clean the windows</li>
<li>Answer emails</li>
<li>Learn javascript</li>
<li>Learn more javascript</li>
<li>And learn even more!</li>
</ol>
<p id="toDoNotes">Make sure all are completed by 8pm so I can watch the game on TV!</p>
</body>
</html>
Ist meine Nutzung von getElementsByTagName im Code
var oltags = document.getElementsByTagName("ol");
nicht richtig? Und wenn ja, warum? Oder verursacht etwas anderes dieses Problem?
Folgefrage: Gibt es eine bessere Möglichkeit, auf Textknoten innerhalb von Elementen zuzugreifen als auf die Art und Weise, wie ich es hier gemacht habe?
var oltags = document. getElementsByTagName ("ol") gibt die HTML-Sammlung zurück und Sie können auf jedes Element über seinen Index zugreifen –
Das ist, was ich oben verwendet habe. Ich verstehe nicht, warum es den "undefined" Fehler gibt, wenn ich 'oltags.childNodes.length' verwende. Ich werde den Artikel lesen, auf den von @jsquerylover unten verwiesen wird. –
Kann mir auch jemand sagen, warum die down votes über das für mich? Habe ich hier etwas falsch gemacht? –