簡體   English   中英

getElementsByTagName - 無法讀取未定義的屬性“長度”

[英]getElementsByTagName - Cannot read property 'length' of undefined

我正在學習如何通過 javascript 節點解析以各種方式收集信息。

當我運行下面包含的代碼時,一切正常,直到我看到一行:

for(var i = 0; i < olElements.childNodes.length; i++){

我收到錯誤消息:“未捕獲的類型錯誤:無法讀取未定義的屬性‘長度’”。

這是我的完整腳本:

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

HTML如下:

<!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>

我在代碼中是否使用了 getElementsByTagName

var oltags = document.getElementsByTagName("ol");

不正確? 而且,如果是這樣,為什么? 或者是其他原因導致了這個問題?

后續問題:有沒有比我在這里做的更好的方法來訪問元素內的文本節點?

為什么不只使用標簽名稱?

var a = olElement.getElementsByTagName("li");

for(var i = 0; i < a.length; i++){
    if(a[i].nodeType == 1 ){

//etc

您應該使用document.getElementById("idOfElement")然后迭代它的子節點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM