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 相关文章推荐
prototype 1.5 &amp; scriptaculous 1.6.1 学习笔记
Sep 07 Javascript
jQuery 行背景颜色的交替显示(隔行变色)实现代码
Dec 13 Javascript
JQuery获取各种宽度、高度(format函数)实例
Mar 04 Javascript
jquery实现的鼠标拖动排序Li或Table
May 04 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
Sep 02 Javascript
js获取上传文件的绝对路径实现方法
Aug 02 Javascript
14 个折磨人的 JavaScript 面试题
Aug 08 Javascript
Javascript 获取鼠标当前的位置实现方法
Oct 27 Javascript
React数据传递之组件内部通信的方法
Dec 31 Javascript
详解vue的双向绑定原理及实现
May 05 Javascript
vue使用video.js进行视频播放功能
Jul 18 Javascript
js对象属性名驼峰式转下划线的实例代码
Sep 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 采集程序中常用的函数
2009/12/09 PHP
关于php连接mssql:pdo odbc sql server
2011/07/20 PHP
php使用百度天气接口示例
2014/04/22 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
设定php简写功能的方法
2019/11/28 PHP
js 数组的for循环到底应该怎么写?
2010/05/31 Javascript
jQuery的运行机制和设计理念分析
2011/04/05 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
详解JavaScript对象和数组
2015/12/03 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
js仿百度切换皮肤功能(html+css)
2016/07/10 Javascript
原生js实现弹出层登录拖拽功能
2016/12/05 Javascript
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
vue-week-picker实现支持按周切换的日历
2019/06/26 Javascript
Javascript生成器(Generator)的介绍与使用
2021/01/31 Javascript
跟老齐学Python之模块的加载
2014/10/24 Python
python+selenium实现登录账户后自动点击的示例
2017/12/22 Python
python中将字典形式的数据循环插入Excel
2018/01/16 Python
django中瀑布流写法实例代码
2019/10/14 Python
python数值基础知识浅析
2019/11/19 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
python实现图像外边界跟踪操作
2020/07/13 Python
如何Tkinter模块编写Python图形界面
2020/10/14 Python
使用OpenCV校准鱼眼镜头的方法
2020/11/26 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
2021/02/03 Python
设置器与访问器的定义以及各自特点
2016/01/08 面试题
物理教育专业毕业生推荐信
2013/11/03 职场文书
信息专业个人的自我评价
2013/12/27 职场文书
国旗下演讲稿
2014/05/08 职场文书
会计专业毕业生求职信
2014/07/04 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
新郎答谢词
2015/01/04 职场文书
写给同事的离职感言
2015/08/04 职场文书
劳务派遣管理制度(样本)
2019/08/23 职场文书
redis通过6379端口无法连接服务器(redis-server.exe闪退)
2021/05/08 Redis
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技