Javascript document.getElementsByTagName不';不行。如何获取身体节点列表的长度?

Javascript document.getElementsByTagName不';不行。如何获取身体节点列表的长度?,javascript,dom,Javascript,Dom,我想得到body标签的长度或项目。 但是,就节点列表而言,getElementsByTagName似乎不起作用。 我该怎么做 <script type=text/javascript> var b = document.getElementsByTagName('body');

我想得到body标签的长度或项目。 但是,就节点列表而言,getElementsByTagName似乎不起作用。 我该怎么做

 <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>

var b=document.getElementsByTagName('body');
控制台日志(b);/。。。
console.log(b.length);//0
console.log(b[0]);//未定义
console.log(b.item(0));//无效的
谢谢

[编辑] 我加了整个身体

<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>

var b=document.getElementsByTagName('body');
控制台日志(b);/。。。
console.log(b.length);//0
console.log(b[0]);//未定义
console.log(b.item(0));//无效的
你好
试验

试验

试验

试验

试验

试验


您必须在加载文档后放置它。您可以通过将其放在主体的最末端,或者在触发指示DOM就绪的事件之前不执行代码来实现。在
标记中有它的地方,还没有
标记-它还没有被创建。这就是为什么您的代码在示例中不起作用(现在您已经包含了完整的示例)

一旦你把代码放在一个安全的地方,在加载DOM后执行,你的代码在Chrome中对我来说就非常好了。我得到这个输出:

[<body>​</body>​]
1
<body>​</body>​
<body>​</body>​
[​​]
1.
​​
​​

此代码的意义是什么?只有一个
标记,您可以随时将其作为
文档引用。body

如果您想要文档中所有节点的列表,请尝试:
文档.getElementsByTagName('*')
文档.querySelectorAll('*')
。通常有文档中只有一个
-标记,因此
document.getElementsByTagName('body')
的长度应为1

如果需要文档
中所有元素的列表,请使用:

document.getElementsByTagName('body')[0].getElementsByTagname('*');

将脚本放在页面末尾,或将其放在函数中,并在整个页面加载后调用它。

将脚本代码放在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>

你好
试验

试验

试验

试验

试验

试验

var b=document.getElementsByTagName('body'); 控制台日志(b);/。。。 console.log(b.length);//0 console.log(b[0]);//未定义 console.log(b.item(0));//null
它无法工作的原因仅仅是因为脚本是在加载元素之前运行的

改变

<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>

var b=document.getElementsByTagName('body');
控制台日志(b);/。。。
console.log(b.length);//0
console.log(b[0]);//未定义
console.log(b.item(0));//null
你好
试验

试验

试验

试验

试验

试验

致:


你好
试验

试验

试验

试验

试验

试验

var b=document.getElementsByTagName('body'); 控制台日志(b);/。。。 console.log(b.length);//0 console.log(b[0]);//未定义 console.log(b.item(0));//null

然后它将毫无问题地运行。

谢谢!getElementsByTagName('*')可以工作。但getElementsByTagName('body')仍然可以。长度返回0。可能脚本不在页面底部(就在
之前。您可以将其移动到那里,或者使用
窗口应用脚本。onload
。无论如何,也可以看到这个JSFIDLE示例:。在JSFIDLE生成的页面中,脚本是@page bottom.@KenichiTakano-
document.getElementsByTagName(“body”)
在创建body标记后执行代码时对我有效,如果在创建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>
<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>