document.getElementsByTagName没有'不起作用.如何获取body的NodeList的长
document.getElementsByTagName doesn't work. How can I get the length of NodeList of body?
我想获取body标记的长度或项。但是,似乎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>
将脚本放在页面的末尾,或者将其放在函数中,并在加载整个页面后调用它。
将脚本代码放在主体元素关闭之后。如果在创建元素之前尝试访问该元素,则找不到该元素。例如,以下内容应该会给您预期的结果:
<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>
如果您想要文档中所有节点的列表,请尝试:document.getElementsByTagName('*')
或document.querySelectorAll('*')
。文档中(通常)只有一个<body>
-标记,因此document.getElementsByTagName('body')
的长度应该是1。
如果您需要文档<body>
中所有元素的列表,请使用:
document.getElementsByTagName('body')[0].getElementsByTagname('*');
您必须在文档加载后将其放置。您可以将它放在主体的最后,也可以在触发指示DOM准备就绪的事件之前不执行代码。在<head>
标记中有它的地方,还没有<body>
标记——它还没有创建。这就是为什么您的代码在您的示例中不起作用(现在您已经包含了完整的示例)。
一旦你把代码放在一个安全的地方,让它在加载DOM后执行,你的代码在Chrome中对我来说非常好。我得到这个输出:
[<body></body>]
1
<body></body>
<body></body>
这个代码有什么意义?正好有一个<body>
标记,您可以随时将其引用为document.body
。
它不起作用的原因只是因为脚本是在加载元素之前运行的。
更改
<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>
收件人:
<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>
<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>
</body>
</html>
然后它将毫无问题地运行。
相关文章:
- 从二维数组中获取img src和img维度,并在body中显示
- 如何从未定义的表单中获取req.body
- 如何从body标记中获取元素的索引
- 使用PhantomJS获取body onload javascript的值
- 我无法从nodejs + expressjs中的req.body获取数据
- 在尝试获取request.body Nodejs中的所有字段时获取异常“Object.keys在尝试访问对象时调用非对象
- document.getElementsByTagName没有'不起作用.如何获取body的NodeList的长
- 获取一个body类元素并将其转换为PHP变量
- 仅使用javascript获取站点的body元素
- 从网站获取body标签值
- jQuery获取正文中的html以及body标签
- Wkhtmltopdf在body html内获取页面计数
- 在指令中获取body元素
- 如何使用 jquery 获取 body 元素
- 通过body上的mousmove事件获取鼠标所在的元素
- 正在获取nodejs中未定义的request.body值
- JsonRestStore:使用POST + Body获取所有对象,而不是get
- 无法从ajax响应中获取body元素
- 如何使用javascript获取body标签的值
- Javascript:在一行字符串中获取body html.如何删除换行符