我想得到身体标签的长度或项目。 但是,似乎getElementsByTagName在NodeList方面不起作用。 我怎么能这样做?
<script type=text/javascript>
var b = document.getElementsByTagName('body');
console.log(b); // <body>...</body>
console.log(b.length); // 0
console.log(b[0]); // undefined
console.log(b.item(0)); // null
</script>
感谢。
[编辑] 我加了整个身体。
<html>
<head>
<script type=text/javascript>
var b = document.getElementsByTagName('body');
console.log(b); // <body>...</body>
console.log(b.length); // 0
console.log(b[0]); // undefined
console.log(b.item(0)); // null
</script>
</head>
<body>
<div id='test'>
<h2>Hello</h2>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
</body>
</html>
答案 0 :(得分:11)
将脚本放在页面的末尾,或将其放在一个函数中,并在整个页面加载后调用它。
答案 1 :(得分:6)
在关闭body元素后放置脚本代码。如果在创建元素之前尝试访问该元素,则无法找到该元素。例如,以下内容应该为您提供您期望的结果:
<html>
<head>
</head>
<body>
<div id='test'>
<h2>Hello</h2>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
</body>
<!-- script code moved -->
<script type=text/javascript>
var b = document.getElementsByTagName('body');
console.log(b); // <body>...</body>
console.log(b.length); // 0
console.log(b[0]); // undefined
console.log(b.item(0)); // null
</script>
</html>
答案 2 :(得分:3)
如果您想要文档中所有节点的列表,请尝试:document.getElementsByTagName('*')
或document.querySelectorAll('*')
。文档中通常只有一个<body>
标记,因此document.getElementsByTagName('body')
的长度应为1.
如果您需要文档<body>
中所有元素的列表,请使用:
document.getElementsByTagName('body')[0].getElementsByTagname('*');
答案 3 :(得分:1)
您必须在文档加载后放置它。您可以通过将其放在正文的最后或不执行代码直到事件触发指示DOM已就绪为止。您在<head>
标记中的位置,还没有<body>
标记 - 尚未创建。这就是为什么你的代码在你的例子中不起作用的原因(现在你已经包含了完整的例子)。
将代码放在安全的地方,以便在加载DOM后执行,您的代码在Chrome中对我来说非常合适。我得到了这个输出:
[<body></body>]
1
<body></body>
<body></body>
这段代码有什么意义?只有一个<body>
代码,您可以随时将其引用为document.body
。
答案 4 :(得分:0)
它不起作用的原因仅仅是因为脚本是在元素加载之前运行的。
改变
school_ids:
school1: '001'
#important school2
school2: '002'
school3: '003'
targets:
neighborhood1:
schools:
- school1-paloalto
teachers:
- 33
neighborhood2:
schools:
- school2-paloalto
teachers:
- 35
neighborhood3:
schools:
- school3-paloalto
teachers:
- '31'
致:
-
然后它就可以毫无问题地运行了。