国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > JS > 正文

JS中appendChild追加子節(jié)點(diǎn)無(wú)效的解決方法

2024-05-06 16:46:25
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

JS中appendChild追加子節(jié)點(diǎn)無(wú)效

有這么一段代碼:

let divs = document.getElementsByClassName('test');let btn = document.createElement('div');for(let i=0;i<divs.length;i++){ divs[i].appendChild(btn);}

表面上這段代碼為每個(gè) class屬性為 test的元素添加一個(gè) div子元素。

看起來(lái)沒(méi)有什么問(wèn)題,但是執(zhí)行完之后卻發(fā)現(xiàn)子元素并沒(méi)有成功添加,也沒(méi)有報(bào)錯(cuò)。

這其實(shí)是因?yàn)橐粋€(gè)元素只能有一個(gè)父元素,上面這段代碼試圖將 btn添加到多個(gè)元素中。

而這與一個(gè)元素只能有一個(gè)父元素相矛盾,自然就添加不了。

解決辦法也很簡(jiǎn)單,就是將 btn的聲明語(yǔ)句放到循環(huán)里面去,這樣每次添加的 btn都是不同的元素,自然也就沒(méi)有上面的問(wèn)題了。

代碼如下:

let divs = document.getElementsByClassName('test');for(let i=0;i<divs.length;i++){ let btn = document.createElement('div'); divs[i].appendChild(btn);}

附:JS原生追加子節(jié)點(diǎn)

var fragment = document.createDocumentFragment();li = document.createElement('li');li.className = "xxx";fragment.appendChild(li); document.getElementById("xx").appendChild(fragment);

如上,需要先原生創(chuàng)建節(jié)點(diǎn),節(jié)點(diǎn)內(nèi)容成為了document的一部分才能appendchild,

如果直接  appendchild(“<div></div>”)是不可以的,

因?yàn)?code style="margin: 3px auto 0px; padding: 2px 4px; outline: none; font-style: inherit; font-weight: inherit; background: rgb(249, 242, 244); width: 640px; line-height: 1.5; clear: both; font-size: 12px; border: 1px solid rgb(204, 204, 204); color: rgb(199, 37, 78); border-radius: 0px; font-family: Menlo, Monaco, Consolas, "Courier New", monospace;">appendChild(Node)這個(gè) 方法一般是在指定元素節(jié)點(diǎn)的最后一個(gè)子節(jié)點(diǎn)之后添加節(jié)點(diǎn) 

但如果Node是頁(yè)面中的DOM對(duì)象,那么就不是添加節(jié)點(diǎn)了,就是直接Move節(jié)點(diǎn)。 

appendChild你可以理解為移動(dòng)一個(gè)元素。如果想復(fù)制一份過(guò)去,要事先clone 

但是不管怎樣,這個(gè)node需要先存在,

append()前面是要選擇的對(duì)象,后面是要在對(duì)象內(nèi)插入的元素內(nèi)容 

appendTo()前面是要插入的元素內(nèi)容且為Jquery對(duì)象,而后面是要選擇的對(duì)象 

實(shí)例: 

$('#a').append('content'); $('<div>content</div>').appendTo($('#a')); //注意appendTo前面一定要是Jquery對(duì)象。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)VeVb武林網(wǎng)的支持。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JavaScript/Ajax教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 遵化市| 濉溪县| 长宁区| 石狮市| 涞源县| 宁波市| 镶黄旗| 汉中市| 泰顺县| 嵊州市| 丽江市| 理塘县| 宝鸡市| 车致| 关岭| 衢州市| 兴仁县| 峨边| 永年县| 赤峰市| 安西县| 宾阳县| 于田县| 唐山市| 鄂州市| 象山县| 临海市| 岢岚县| 博爱县| 且末县| 和田县| 宜良县| 海晏县| 大名县| 察雅县| 赤水市| 张家港市| 洛隆县| 土默特右旗| 大城县| 黄骅市|