的getElementsByTagName(标签)。长度

时间:2012-05-30 16:01:07

标签: javascript html5 dom

我试图在<li> - 列表中计算<ul> - 元素。我希望它能像这样工作:

(JavaScript):

var ul = document.getElementById('listing');
function countLi(){
    alert("There are "+ul.getElementsByTagName('li').length+" Li-Elements in this Documnet!");
}

(HTML):

<input type="button" onclick="countLi()" value="Count the Li's!"/>
<ul id="listing">
    <li>one</li>
    <li>two</li>
    <li>three</li>
</ul>​

它告诉我,“ul为null”。那我的错在哪里?

亲切的问候, vogti

编辑: 啊,是的I did a Fiddle for you

2 个答案:

答案 0 :(得分:5)

你的问题是这一行:

var ul = document.getElementById('listing');

ul存在之前执行。将您的整个脚本移动到</ul>下面,将代码放在window.onload / $(document).ready回调中,或者只是将该行移到您的函数中(这也会使您的{{1}变量本地作用于该函数):

ul

答案 1 :(得分:2)

尝试这样。当你的代码块被渲染时,列表元素没有准备就绪。

function countLi(){
    var ul = document.getElementById('listing');
    alert("There are "+ul.getElementsByTagName('li').length+" Li-Elements in this Documnet!");
    }