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 相关文章推荐
ExtJS Grid使用SimpleStore、多选框的方法
Nov 20 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
Mar 04 Javascript
jQuery实现的进度条效果
Jul 15 Javascript
js省市县三级联动效果实例
Apr 15 Javascript
JS实现鼠标滑过显示边框的菜单效果
Sep 21 Javascript
深入浅析Vue组件开发
Nov 25 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
Mar 07 Javascript
js实现返回顶部效果
Mar 10 Javascript
Angularjs中使用指令绑定点击事件的方法
Mar 30 Javascript
vue源码解析之事件机制原理
Apr 21 Javascript
解决vue项目刷新后,导航菜单高亮显示的位置不对问题
Nov 01 Javascript
jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
Jun 02 jQuery
详解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自动给网址加上链接的方法
2015/06/02 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
php通过会话控制实现身份验证实例
2016/10/18 PHP
在IE6下发生Internet Explorer cannot open the Internet site错误
2010/06/21 Javascript
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
HTML5之lang属性与dir属性的详解
2013/06/19 Javascript
两个select多选模式的选项相互移动(示例代码)
2014/01/11 Javascript
html的DOM中Event对象onabort事件用法实例
2015/01/21 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
javascript实现类似百度分享功能的方法
2015/07/27 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
BootStrap的JS插件之轮播效果案例详解
2016/05/16 Javascript
jquery删除table当前行的实例代码
2016/10/07 Javascript
JavaScript实现替换字符串中最后一个字符的方法
2017/03/07 Javascript
原生js封装自定义滚动条
2017/03/24 Javascript
基于node.js之调试器详解
2017/08/22 Javascript
基于模板引擎Jade的应用(详解)
2017/12/12 Javascript
JS实现二维数组元素的排列组合运算简单示例
2019/01/28 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
详解Vue.js 响应接口
2020/07/04 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
2020/08/06 Javascript
vue等两个接口都返回结果再执行下一步的实例
2020/09/08 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
2020/11/02 Javascript
Python 获取windows桌面路径的5种方法小结
2019/07/15 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
基于nexus3配置Python仓库过程详解
2020/06/15 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
自荐信怎么写好
2013/11/11 职场文书
广告设计专业自荐信范文
2013/11/14 职场文书
说谎欺骗人检讨书300字
2014/11/18 职场文书
大二学年个人总结
2015/03/03 职场文书
环保证明
2015/06/23 职场文书
2016年国陪研修感言
2015/11/18 职场文书
mysql 索引合并的使用
2021/08/30 MySQL