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

AppendChild in `for` 循环或 `forEach `

AppendChild in `for` 循环或 `forEach `

繁花如伊 2023-05-19 19:53:39
我有几个类作为single-product类名。appendChild我正在尝试在 javascript 中使用in将按钮添加到所有按钮for loop。但它似乎没有用。我不明白为什么?我正在使用querySelectorAll.let products = document.querySelectorAll('.single-products')然后我创建了一个div包含我的按钮的元素。let button = document.createElement('div');button.innerHTML = "<a class='btn hero-btn'>Add to cart</a>";for (let i=0 ; i < products.length ; i++){document.querySelectorAll('.single-product')[i].appendChild(button.cloneNode())我也尝试过forEach使用thisas 参数,但即使那样也没有用。
查看完整描述

2 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

您的程序永远不会进入循环,并且它还会生成 ReferenceError 因为products从未定义为查找它的长度。你必须在程序进入 for 循环之前定义它。而另一件事cloneNode()只是在基础级别创建克隆。您必须使用cloneNode(true)它来克隆它及其后代。这是您的代码的修复:


let button = document.createElement("div");


button.innerHTML = "<a class='btn hero-btn'>Add to cart</a>";


let products = document.querySelectorAll(".single-product");


for (let i = 0; i < products.length; i++) {

  products[i].appendChild(button.cloneNode(true));

}


查看完整回答
反对 回复 2023-05-19
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

您需要调用cloneNode()withtrue来克隆它的后代/子代。

同样首先获取元素列表一次,然后遍历它并附加按钮,就像。


let button = document.createElement('div');

button.innerHTML = "<a class='btn hero-btn'>Add to cart</a>";


let productSections = document.querySelectorAll('.single-product');

for (let i=0 ; i < productSections.length ; i++){

   productSections[i].appendChild(button.cloneNode(true));

)


查看完整回答
反对 回复 2023-05-19
  • 2 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

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