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


Posted in Javascript onOctober 14, 2018

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 相关文章推荐
一个可以随意添加多个序列的tag函数
Jul 21 Javascript
常用js字符串判断方法整理
Oct 18 Javascript
Javascript高级技巧分享
Feb 25 Javascript
js操作模态窗口及父子窗口间相互传值示例
Jun 09 Javascript
JavaScript计算器网页版实现代码分享
Jul 15 Javascript
JS实现的手机端精简幻灯片效果
Sep 05 Javascript
jQuery实现的背景颜色渐变动画效果示例
Mar 24 jQuery
AngularJS+bootstrap实现动态选择商品功能示例
May 17 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
Jan 21 Javascript
js+canvas实现简单扫雷小游戏
Jan 22 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
Oct 27 Javascript
Vue解决移动端弹窗滚动穿透问题
Dec 15 Vue.js
详解ES6 Symbol 的用途
Oct 14 #Javascript
javascript实现文本框标签验证的实例代码
Oct 14 #Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
Oct 14 #Javascript
单页面vue引入百度统计的使用方法示例详解
Oct 13 #Javascript
详解解决Vue相同路由参数不同不会刷新的问题
Oct 12 #Javascript
详解webpack loader和plugin编写
Oct 12 #Javascript
深入理解Angularjs 脏值检测
Oct 12 #Javascript
You might like
php删除文件夹及其文件夹下所有文件的函数代码
2013/01/23 PHP
php session劫持和防范的方法
2013/11/12 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
2015/09/30 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
Swoole扩展的6种模式深入详解
2021/03/04 PHP
javascript脚本调试方法小结
2008/11/24 Javascript
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
2015/03/04 Javascript
javascript实现可全选、反选及删除表格的方法
2015/05/15 Javascript
jQuery实现平滑滚动的标签分栏切换效果
2015/08/28 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
JS+HTML+CSS实现轮播效果
2017/11/28 Javascript
vuejs简单验证码功能完整示例
2019/01/08 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
2019/06/14 Javascript
Vue路由前后端设计总结
2019/08/06 Javascript
JavaScript数组去重实现方法小结
2020/01/17 Javascript
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
Python 实现打印单词的菱形字符图案
2020/04/12 Python
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
英国健康和美容技术产品购物网站:CurrentBody
2019/07/17 全球购物
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
制衣厂各岗位职责
2013/12/02 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
就业推荐表导师评语
2014/12/31 职场文书
先进个人评语大全
2015/01/04 职场文书
个人售房合同协议书
2016/03/21 职场文书
导游词之镇江焦山
2019/11/21 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python