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 相关文章推荐
兼容多浏览器的字幕特效Marquee的通用js类
Jul 20 Javascript
ExtJS 2.0实用简明教程 之获得ExtJS
Apr 29 Javascript
JavaScript 应用技巧集合[推荐]
Aug 30 Javascript
js拼接html注意问题示例探讨
Jul 14 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
Mar 02 Javascript
最实用的jQuery分页插件
Oct 09 Javascript
layui分页效果实现代码
May 19 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
Sep 14 Javascript
vue动态删除从数据库倒入列表的某一条方法
Sep 29 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
Aug 22 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
Jul 29 Javascript
详解JS ES6编码规范
May 07 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
ADODB的数据库封包程序库
2006/12/31 PHP
php download.php实现代码 跳转到下载文件(response.redirect)
2009/08/26 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
2010/08/01 PHP
在php和MySql中计算时间差的方法详解
2015/03/27 PHP
改变javascript函数内部this指针指向的三种方法
2010/04/23 Javascript
jquery插件制作简单示例说明
2012/02/03 Javascript
表单元素的submit()方法和onsubmit事件应用概述
2013/02/01 Javascript
JavaScript实现网页图片等比例缩放实现代码及调用方式
2013/02/25 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
jquery实现全屏滚动
2015/12/28 Javascript
JavaScript阻止回车提交表单的方法
2015/12/30 Javascript
Javascript实现页面滚动时导航智能定位
2017/05/06 Javascript
vuex 使用文档小结篇
2018/01/11 Javascript
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
老生常谈JS中的继承及实现代码
2018/07/06 Javascript
vue全局使用axios的方法实例详解
2018/11/22 Javascript
JavaScript实现更换背景图片
2019/10/18 Javascript
常见的在Python中实现单例模式的三种方法
2015/04/08 Python
python登录pop3邮件服务器接收邮件的方法
2015/04/30 Python
python获取文件扩展名的方法
2015/07/06 Python
python检查URL是否正常访问的小技巧
2017/02/25 Python
python argparser的具体使用
2019/11/10 Python
快速解决jupyter启动卡死的问题
2020/04/10 Python
Python如何绘制日历图和热力图
2020/08/07 Python
Python+unittest+requests+excel实现接口自动化测试框架
2020/12/23 Python
CSS3 圆角效果
2009/07/15 HTML / CSS
CSS3属性使网站设计增强同时不消弱可用性
2009/08/29 HTML / CSS
css3 position fixed固定居中问题解决方案
2014/08/19 HTML / CSS
最好的意大利皮夹克:D’Arienzo
2018/12/04 全球购物
广播电视新闻学专业应届生求职信
2013/10/08 职场文书
师德师风建设方案
2014/05/08 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书
《最终幻想14》6.01版本4月5日推出 追加新任务新道具
2022/04/03 其他游戏
漫画《催眠麦克风-Dawn Of Divisions》第二卷PV公开
2022/04/05 日漫
python pygame 开发五子棋双人对弈
2022/05/02 Python