JS中appendChild追加子节点无效的解决方法

 更新时间:2018年10月14日 10:20:11   作者:渔父歌  
这篇文章主要给大家介绍了关于JS中appendChild追加子节点无效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习

JS中appendChild追加子节点无效

有这么一段代码:

let divs = document.getElementsByClassName('test');
let btn = document.createElement('div');

for(let i=0;i<divs.length;i++){
 divs[i].appendChild(btn);
}

表面上这段代码为每个 class属性为 test的元素添加一个 div子元素。

看起来没有什么问题,但是执行完之后却发现子元素并没有成功添加,也没有报错。

这其实是因为一个元素只能有一个父元素,上面这段代码试图将 btn添加到多个元素中。

而这与一个元素只能有一个父元素相矛盾,自然就添加不了。

解决办法也很简单,就是将 btn的声明语句放到循环里面去,这样每次添加的 btn都是不同的元素,自然也就没有上面的问题了。

代码如下:

let divs = document.getElementsByClassName('test');

for(let i=0;i<divs.length;i++){
 let btn = document.createElement('div');
 divs[i].appendChild(btn);
}

附:JS原生追加子节点

var fragment = document.createDocumentFragment();
li = document.createElement('li');
li.className = "xxx";
fragment.appendChild(li); 
document.getElementById("xx").appendChild(fragment);

如上,需要先原生创建节点,节点内容成为了document的一部分才能appendchild,

如果直接  appendchild(“<div></div>”)是不可以的,

因为appendChild(Node)这个 方法一般是在指定元素节点的最后一个子节点之后添加节点 

但如果Node是页面中的DOM对象,那么就不是添加节点了,就是直接Move节点。 

appendChild你可以理解为移动一个元素。如果想复制一份过去,要事先clone 

但是不管怎样,这个node需要先存在,

append()前面是要选择的对象,后面是要在对象内插入的元素内容 

appendTo()前面是要插入的元素内容且为Jquery对象,而后面是要选择的对象 

实例: 

$('#a').append('content'); 
$('<div>content</div>').appendTo($('#a')); 

//注意appendTo前面一定要是Jquery对象。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • JavaScript 内置对象 BigInt详细解析

    JavaScript 内置对象 BigInt详细解析

    这篇文章主要介绍了JavaScript 内置对象 BigInt详细解析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • typescript路径别名问题详解与前世今生的故事

    typescript路径别名问题详解与前世今生的故事

    我们都知道只有正确引用路径,Typescript才不会提示报错,这篇文章主要给大家介绍了关于typescript路径别名问题详解与前世今生的故事,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • JavaScript注册时密码强度校验代码

    JavaScript注册时密码强度校验代码

    这篇文章主要为大家详细介绍了JavaScript注册时密码强度校验代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • JS如何在数组指定位置插入元素

    JS如何在数组指定位置插入元素

    这篇文章主要介绍了JS如何在数组指定位置插入元素,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • js indexOf 的正确用法示例详解

    js indexOf 的正确用法示例详解

    indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置,这篇文章主要介绍了js indexOf 的正确用法,需要的朋友可以参考下
    2023-02-02
  • JS中数据类型的正确判断方法实例

    JS中数据类型的正确判断方法实例

    怎么去判断一个数据属于哪个数据类型,这个是很常见的操作,我们一般都会想到typeof和instanceof这两个常见的方法,但有时候这两种方法并不能满足我们的需求,下面这篇文章主要给大家介绍了关于JS中数据类型的正确判断方法,需要的朋友可以参考下
    2021-08-08
  • 面试判断元素是否在可视区域中IntersectionObserver详解

    面试判断元素是否在可视区域中IntersectionObserver详解

    这篇文章主要为大家介绍了判断元素是否在可视区域中IntersectionObserver面试详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Webpack实现按需打包Lodash的几种方法详解

    Webpack实现按需打包Lodash的几种方法详解

    这篇文章主要给大家介绍了关于Webpack实现按需打包Lodash的几种方法,文中介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • js淡入淡出的图片轮播效果代码分享

    js淡入淡出的图片轮播效果代码分享

    这篇文章主要介绍了js淡入淡出的图片轮播切换特效,图片可以随意替换,文中示例代码介绍的非常详细,具有一定的参考价值,推荐给大家,感兴趣的小伙伴们可以参考一下
    2015-08-08
  • 全面理解面向对象的 JavaScript(来自ibm)

    全面理解面向对象的 JavaScript(来自ibm)

    要掌握好 JavaScript,首先一点是必须摒弃一些其他高级语言如 Java、C# 等类式面向对象思维的干扰,全面地从函数式语言的角度理解 JavaScript 原型式面向对象的特点
    2013-11-11

最新评论