为什么childNodes不能在这个脚本中工作?

时间:2013-01-08 18:46:58

标签: dom nodes getelementsbytagname

我是JS的新手,并试图学习一些基本的东西。我花了好几个小时,但我认为不应该那么困难。出于某种原因,我的计算机没有意识到我要求childNodes。

这是一个简单的脚本,只是试图计算我拥有的li标签的数量。我知道还有其他方法可以做到这一点,但我正在努力学习这种方式。

<title>To-Do List</title>
<script>
    function findComments(){
        var bodyTag = document.getElementsByTagName("ol");
        var count = 0;
        for(var i=0;i<bodyTag.childNodes.length;i++){
            if(bodyTag.childNodes[i].nodeType == 1){
                count++;
            }
        }
        alert(count);       
    }
    window.onload = findComments;
</script>

<!--List is declared-->
<ol id="toDoList">
    <!--List Items are created-->
    <li>Mow the lawn</li>
    <li>Clean the windows</li>
    <li>Answer your email</li>
</ol>
<!--Main paragraph-->
<p id="toDoNotes">Make sure all these are completed by 8pm so you can watch the game on TV!</p>
    <script>
</script>

1 个答案:

答案 0 :(得分:1)

getElementsByTagName返回一个数组,你需要检索它的第一个元素(并将名称从bodyTag更改为olTag或者其他东西,因为它不是body标签,并且混淆了我试图理解你的代码)

function findComments(){
    var ol = document.getElementsByTagName("ol")[0];
    var count = 0;
    for(var i=0;i<ol.childNodes.length;i++){
        if(ol.childNodes[i].nodeType == 1){
            count++;
        }
    }
    alert(count);       
}

现在你应该知道你的代码出了什么问题

var ol = document.getElementsByTagName("ol")[0];
var liCount = ol.getElementsByTagName("li").length;