为了账号安全,请及时绑定邮箱和手机立即绑定

原生js仿写append()出现不能理解的问题

原生js仿写append()出现不能理解的问题

慕容3067478 2019-03-19 17:15:03
在闲来无事的上班时间,想着做一个自己的jquery,满足自己开发需要。在处理append()方法时,考虑到class可能存在重名多个元素节点的情况下,对其进行遍历添加需要添加元素节点。js如下所示,通过appendChild()追加元素节点function EQuery(ele){    this.elements = [];    switch(typeof ele){        case "string":            switch(ele.charAt(0)){                case "#": //id                    this.elements.push(document.querySelector(ele));                    break;                case ".": //class                    this.elements = document.querySelectorAll(ele);                    break;                default: // p                    this.elements = document.getElementsByTagName(ele);                    break;            }            break;            default:            console.log('this type is not supported by EQuery');            break;    }    }// EQuery.prototype.append = function(obj){  //     var len = this.elements.length;//     for (var i = 0; i < len; i++) {//         this.elements[i].innerHTML += obj;//     }// }   EQuery.prototype.append = function(obj){    var len = this.elements.length,        content = '',        tagName,        ele;    var reg = /<(\S*?)>(\S*?)<\S*?>/;    if(reg.exec(obj)){        tagName = RegExp.$1;        content = RegExp.$2;    }    ele = document.createElement(tagName);    ele.innerHTML = content;    this.elements.forEach(function(value,index,arr){        value.appendChild(ele);    })}html    <div class="spring"><h4>HI</h4></div>    <div class="spring"><h4>HI</h4></div>    <div class="spring"><h4>HI</h4></div>    <div class="spring"><h4>HI</h4></div>    <div class="spring"><h4>HI</h4></div>    <script>    var springList = $E('.spring');    springList.append('<span>bangbangbang!</span>');    <script>在html中,对class = "spring"的所有div进行追加了'<span>bangbangbang!</span>',但是在审查元素节点时候,仅最后一个div可以被成功添加,效果图如下所示:打印各项数据均正常,问题应该出现在循环添加那一步,不明哪里做错了,请大神不吝赐教~
查看完整描述

2 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

嗨,多次 appendChild 一个 node 会从原来的地方 remove 掉的,可以克隆 node 。value.appendChild(ele.cloneNode());

查看完整回答
反对 回复 2019-04-06
  • 2 回答
  • 0 关注
  • 600 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信