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 相关文章推荐
通过Mootools 1.2来操纵HTML DOM元素
Sep 15 Javascript
匹配任意字符的正则表达式写法
Apr 29 Javascript
Jquery实现页面加载时弹出对话框代码
Apr 19 Javascript
JS获取当前日期时间并定时刷新示例
Mar 04 Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
Sep 18 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
May 30 Javascript
JSON键值对序列化和反序列化解析
Jan 24 Javascript
JS+canvas画一个圆锥实例代码
Dec 13 Javascript
Vue打包后出现一些map文件的解决方法
Feb 13 Javascript
vue实现百度下拉列表交互操作示例
Mar 12 Javascript
原生js+css实现tab切换功能
Sep 17 Javascript
JavaScript 中for/of,for/in 的详细介绍
Nov 17 Javascript
详解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通用分页类page.php[仿google分页]
2008/08/31 PHP
php中如何判断一个网页请求是ajax请求还是普通请求
2013/08/10 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
linux下为php添加iconv模块的方法
2016/02/28 PHP
关于PHP中协程和阻塞的一些理解与思考
2017/08/11 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
JQuery之拖拽插件实现代码
2011/04/14 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
jQuery关键词说明插件cluetip使用指南
2015/04/21 Javascript
JS功能代码集锦
2016/05/04 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
React Native AsyncStorage本地存储工具类
2017/10/24 Javascript
详解node.js 下载图片的 2 种方式
2018/03/02 Javascript
原生JS实现的雪花飘落动画效果
2018/05/03 Javascript
vue计算属性get和set用法示例
2019/02/08 Javascript
VUE 实现复制内容到剪贴板的两种方法
2019/04/24 Javascript
vuex实现像调用模板方法一样调用Mutations方法
2019/11/06 Javascript
[01:11:28]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第一场 1月8日
2021/03/11 DOTA
python列表操作使用示例分享
2014/02/21 Python
Python+MongoDB自增键值的简单实现
2016/11/04 Python
Django admin美化插件suit使用示例
2017/12/12 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
2019/08/13 Python
python opencv实现证件照换底功能
2019/08/19 Python
基于Python检测动态物体颜色过程解析
2019/12/04 Python
如何用Python提取10000份log中的产品信息
2021/01/14 Python
全球领先的鞋类零售商:The Walking Company
2016/07/21 全球购物
阿拉伯世界最大的电子卖场:Souq埃及
2016/08/01 全球购物
给分销商的致歉信
2014/01/14 职场文书
清明节网上祭英烈活动总结
2014/04/30 职场文书
希特勒的演讲稿
2014/05/23 职场文书
党员个人剖析材料
2014/09/30 职场文书
一篇文章弄清楚Ajax请求的五个步骤
2022/03/17 Javascript
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis