Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么可以';我不能从body标签访问子节点吗?_Javascript_Html_Nodes - Fatal编程技术网

Javascript 为什么可以';我不能从body标签访问子节点吗?

Javascript 为什么可以';我不能从body标签访问子节点吗?,javascript,html,nodes,Javascript,Html,Nodes,我无法在[9],[11]访问尸体孩子的div标签 我以前使用bd.firstChild、bd.childNodes[n],但总是出现null 在此处插入标题 var rt=document.getRootNode(); document.write(rt.nodeName+“”)//文件 var-ht=rt.firstChild; document.write(ht.nodeName+“”);//html var hd=ht.firstChild; document.write(hd.nod

我无法在[9],[11]访问尸体孩子的div标签

我以前使用bd.firstChild、bd.childNodes[n],但总是出现null


在此处插入标题
var rt=document.getRootNode();
document.write(rt.nodeName+“”)//文件
var-ht=rt.firstChild;
document.write(ht.nodeName+“”);//html
var hd=ht.firstChild;
document.write(hd.nodeName+“”);//头
var bd=hd.nextSibling;
document.write(bd.nodeName+“”);//身体








1. 2.
在将代码段编辑为document.write之前,在文档完成之前,我创建了下面的代码-许多人在文档完成后不使用document.write,但在呈现标记/节点之前,您无法显示它们:

这似乎是一些奇怪的事情,只是得到节点-铬增加了一个新线后,头部之前的身体

这就说明了这个问题

你想退房吗


// https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter/acceptNode // https://developer.mozilla.org/en-US/docs/Web/API/Document/createTreeWalker var nodeIterator=document.createNodeIterator( //要用作根的节点 document.querySelector('html'), /只考虑作为文本节点的节点(节点类型3) NodeFilter.SHOW_元素, //对象,该对象包含用于acceptNode方法的函数 //NodeFilter的 { acceptNode:函数(节点){ //确定是否接受、拒绝或跳过节点的逻辑 //在这种情况下,只接受包含内容的节点 //除了空白 if(!/^\s*$/.test(node.data)){ 返回NodeFilter.FILTER\u接受; } } }, 假的 ); //显示作为根节点的子节点的每个非空文本节点的内容 var节点; while((node=nodeIterator.nextNode()){ console.log(node.tagName); } /*------------旧代码----------------*/ /* var rt=document.getRootNode(); log(“Root”,rt.nodeName+”)//文件 var-ht=rt.firstChild; console.log(“根的第一个子项”,ht.nodeName+”);//html var HTML=ht.nextSibling; console.log(“html的下一步绑定”,html.nodeName+”);//HTML var HEAD=HTML.firstChild; console.log(“Html的第一个子项”,HEAD.nodeName+”);//头 var newLine=HEAD.nextSibling; var BODY=newLine.nextSibling; console.log(“newLine的nextSibling”,BODY.nodeName+”);//身体 */
在将代码段编辑为document.write之前,在文档完成之前,我创建了下面的代码-许多人在文档完成后不使用document.write,但在呈现标记/节点之前,您无法显示它们:

这似乎是一些奇怪的事情,只是得到节点-铬增加了一个新线后,头部之前的身体

这就说明了这个问题

你想退房吗


// https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter/acceptNode // https://developer.mozilla.org/en-US/docs/Web/API/Document/createTreeWalker var nodeIterator=document.createNodeIterator( //要用作根的节点 document.querySelector('html'), /只考虑作为文本节点的节点(节点类型3) NodeFilter.SHOW_元素, //对象,该对象包含用于acceptNode方法的函数 //NodeFilter的 { acceptNode:函数(节点){ //确定是否接受、拒绝或跳过节点的逻辑 //在这种情况下,只接受包含内容的节点 //除了空白 if(!/^\s*$/.test(node.data)){ 返回NodeFilter.FILTER\u接受; } } }, 假的 ); //显示作为根节点的子节点的每个非空文本节点的内容 var节点; while((node=nodeIterator.nextNode()){ console.log(node.tagName); } /*------------旧代码----------------*/ /* var rt=document.getRootNode(); log(“Root”,rt.nodeName+”)//文件 var-ht=rt.firstChild; console.log(“根的第一个子项”,ht.nodeName+”);//html var HTML=ht.nextSibling; console.log(“html的下一步绑定”,html.nodeName+”);//HTML var HEAD=HTML.firstChild; console.log(“Html的第一个子项”,HEAD.nodeName+”);//头 var newLine=HEAD.nextSibling; var BODY=newLine.nextSibling; console.log(“newLine的nextSibling”,BODY.nodeName+”);//身体 */
  • 每当遇到
    元素时,浏览器的网页解析器(和文档生成器)就会暂停(假设它没有
    async
    defer
    属性)
  • document.write
    会在调用时立即将参数文本添加到文档流中。
    • 参数文本被附加到当前解析的文档文本中,然后同步地馈送到文档生成器中。
      • 这种同步行为,以及解析文本和从中创建文档节点的成本高昂,正是
        document.write
        被弃用且不鼓励使用的原因
  • 您正在将人类可读的文本传递到
    文档中。写入
    ,这样新的
    #text
    节点将立即添加到
    元素所在的
    元素中
  • 但是所有这些都是不相关的,因为在你的
    第一个孩子
    实际上是一个
    #text
    节点,由
    之间的空格组成,消除这一点的唯一方法是使用
    而不是
    (\r\n\r\n”)
  • v