Javascript - element.childNodes 没有看到append.newchild

标签 javascript

鉴于以下情况:

<div ID="parent">
<div ID="child1">Children Stuff</div>
<div ID="child2">More Childish things</div>
</div>
<div ID="orphan">Whhhaa I want a mommy</div>


var p = document.getElementById("parent");
var c = document.getElementById("orphan");
p.appendChild(c);
var ch = p.childNodes;
var ln = p.children;
for(var i=0;i < ln.length; i++) {
    console.log(ch[i]);
}
console.log(ln.length);

控制台输出提供:

<div ID="child1">Children Stuff</div>
<div ID="child2">More Childish things</div>
3

这就是我迷失的地方: 我需要从每个子节点(包括新的子节点)获取信息。当然,我不会简单地将其输出到控制台,我需要对与子级共享相似 ID 的其他 DOM 元素执行一些逻辑。

为什么 element.childNodes; 没有?打电话接新 child 吗? 如有任何帮助,我们将不胜感激。

上面是示例空气代码,所以如果语法不是 100%,我深表歉意,但我希望这一点仍然能够得到理解。

最佳答案

您正在循环 ln.length 但读取 ch:

for(var i=0;i < ln.length; i++) {
    console.log(ch[i]);
}

这很快就会让人困惑,因为 ln 的长度为 3 并且包含子元素。 ch 的长度为 6,包含所有元素(包括 3 个仅换行的文本元素)。

如果您只需再添加 2 个控制台日志,就很容易看到这一点:

console.log('ch',ch);
console.log('ln',ln);

如下:https://jsfiddle.net/mqhevnsu/

关于Javascript - element.childNodes 没有看到append.newchild,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37295798/

相关文章:

javascript - 进入页面后触发粘性页脚以显示隐藏内容

javascript - JQuery-向 anchor 添加属性和参数

javascript - AngularJS 两个具有共享模型的 Controller , Controller 2 没有看到模型的更改

javascript - 使用值加载额外的 CONFIG 文件

javascript - D3 数学函数创建

javascript - 如何将转发器 onclick 按钮的项目中的数据传递给 javascript 文件以在 ajax 中使用

javascript - v-for 循环中的动态 V 模型名称 Vue 2

javascript - 基于key的流对象值

javascript - 刷牙时避免轴被割伤

Javascript 转换法语特殊字符