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 相关文章推荐
Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因
May 07 Javascript
用Javascript来生成ftp脚本的小例子
Jul 03 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
Jul 15 Javascript
Jquery对select的增、删、改、查操作
Feb 06 Javascript
jQuery Validate验证框架经典大全
Sep 23 Javascript
简单实现JS对dom操作封装
Dec 02 Javascript
使用struts2+Ajax+jquery验证用户名是否已被注册
Mar 22 Javascript
angular.js指令中的controller、compile与link函数的不同之处
May 10 Javascript
微信小程序入门之广告条实现方法示例
Dec 05 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
Feb 20 Javascript
vue实现PC端录音功能的实例代码
Jun 05 Javascript
javascript 易错知识点实例小结
Apr 25 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 session实现多级目录存放实现代码
2016/02/03 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
2019/04/11 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
2013/11/22 Javascript
js随机生成网页背景颜色的方法
2015/02/26 Javascript
jQuery使用append在html元素后同时添加多项内容的方法
2015/03/26 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
深入学习JavaScript中的原型prototype
2015/08/13 Javascript
js实现二级菜单渐隐显示
2015/11/03 Javascript
基于Node.js实现nodemailer邮件发送
2016/01/26 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
2016/09/04 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
2017/05/23 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
jQuery实现参数自定义的文字跑马灯效果
2018/08/15 jQuery
angular1.x ui-route传参的三种写法小结
2018/08/31 Javascript
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
2013/11/27 Python
遗传算法之Python实现代码
2017/10/10 Python
Python如何生成树形图案
2018/01/03 Python
python2和python3的输入和输出区别介绍
2018/11/20 Python
python3.8下载及安装步骤详解
2020/01/15 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
2020/03/30 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
2020/05/07 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
Django haystack实现全文搜索代码示例
2020/11/28 Python
高性能装备提升营地:Kammok
2019/02/27 全球购物
考试不及格的检讨书
2014/01/22 职场文书
获奖感言一句话
2015/07/31 职场文书
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript