getElementsByClassName找不到uls

时间:2013-12-02 12:04:13

标签: javascript html html-lists getelementsbyclassname

我无法在Chrome中正常运行代码,但是当我将代码粘贴到JSFIDDLE中时,它可以正常工作。我试图使用getElementsByClassName获取文档中的所有ul标签,然后在其中一个uls中获取所有lis。当我使用getElementsByClassName(“ul”)时,它在Chrome中找不到任何东西,但是如果我在uls getElementsByClassName(“ul”)找到所有这些之前删除两个div中的任何一个,那么div似乎是破坏JS的东西

我无法在JSFIDDLE中重现问题,因为代码在那里正常工作但是在这里:http://jsfiddle.net/zTP9H/

var sElements = document.getElementsByClassName("HeaderWrapWide");
var catOne = document.getElementsByTagName("ul");
alert("number of ul: " + catOne.length);

var liTags = catOne[3].getElementsByTagName("li");
alert("number of li: " + liTags.length);

由于

亚历

3 个答案:

答案 0 :(得分:2)

你确定在html被添加到页面后运行这个javascript吗? jsfiddle可能以不同的方式呈现html / scripts到您的网页,因此这就是它在那里工作的原因。如果您的javascript位于HTML的主要部分,您可能会遇到这种情况 - 尝试在文档就绪函数http://api.jquery.com/ready/上使用jquery或将JS移动到页面底部

我看不出你的代码有什么问题

答案 1 :(得分:0)

我猜您在 head 标记中包含上述JS代码。所以用Immediate function invocation

包装它
(function () {
   //ToDos
})();

JSfiddle

答案 2 :(得分:0)

如果您想执行print中的代码 就像你拥有它一样,然后尝试将代码包装在一个中 如果你不想使用jQuery,那就是这样的功能 此外,这在IE中不起作用,因此请检查caniuse.com/#search=DOMContentLoaded

<head></head>