如何解决在`for`循环或`forEach`中的AppendChild
我有几个班级,single-product
为className。我正在尝试使用JavaScript appendChild
中的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
作为参数的this
,但即使这样也没有用。
解决方法
您需要使用@client.command()
async def channels(ctx):
voice_channel_list = ctx.guild.voice_channels
# ...
来调用cloneNode()
与它的后代/孩子一起克隆。
同样,首先获取一次元素列表,然后对其进行遍历并添加按钮,例如。
true
,
您的程序将永远不会进入循环,并且还会生成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));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。