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 相关文章推荐
经常用的图片在容器中的水平垂直居中实例
Jun 10 Javascript
prototype 学习笔记整理
Jul 17 Javascript
javascript 获取模态窗口的滚动位置代码
Aug 06 Javascript
js的alert弹出框出现乱码解决方案
Sep 02 Javascript
改变隐藏的input中value的值代码
Dec 30 Javascript
jQuery中prepend()方法用法实例
Dec 25 Javascript
jQuery实现表格展开与折叠的方法
May 04 Javascript
AngularJS应用开发思维之依赖注入3
Aug 19 Javascript
各式各样的导航条效果css3结合jquery代码实现
Sep 17 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
Aug 15 Javascript
浅谈MUI框架中加载外部网页或服务器数据的方法
Jan 31 Javascript
JavaScript模拟实现网易云轮播效果
Apr 04 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 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
php 启动时报错的简单解决方法
2014/01/27 PHP
php单例模式的简单实现方法
2016/06/10 PHP
PHP多维数组元素操作类的方法
2016/11/14 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
PHP基于Closure类创建匿名函数的方法详解
2017/08/17 PHP
jquery 与NVelocity 产生冲突的解决方法
2011/06/13 Javascript
web性能优化之javascript性能调优
2012/12/28 Javascript
js怎么覆盖原有方法实现重写
2014/09/04 Javascript
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
2015/04/06 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
2016/11/28 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
javascript修改浏览器title方法 JS动态修改浏览器标题
2017/11/30 Javascript
页面点击小红心js实现代码
2018/05/26 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
2019/06/20 jQuery
Vue export import 导入导出的多种方式与区别介绍
2020/02/12 Javascript
简单使用Python自动生成文章
2014/12/25 Python
Python脚本实现格式化css文件
2015/04/08 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
详解python中*号的用法
2019/10/21 Python
Python pickle模块实现对象序列化
2019/11/22 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
python中@contextmanager实例用法
2021/02/07 Python
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
澳大利亚办公室装修:JasonL Office Furniture
2019/06/25 全球购物
C#公司笔试题
2014/03/28 面试题
倡议书格式模板
2014/05/13 职场文书
员工生日会策划方案
2014/06/14 职场文书
2013年最新自荐信范文
2014/06/23 职场文书
早安问候语大全
2015/11/10 职场文书
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle
学习nginx基础知识
2021/09/04 Servers