gpt4 book ai didi

javascript - 将数组中的项目渲染到 DOM 中,并在单击时更改每个项目的值

转载 作者:行者123 更新时间:2023-12-03 00:14:03 27 4
gpt4 key购买 nike

所以我得到了这段代码来将数组中的所有项目推送到 DOM 内。

如何使点击事件适用于每个项目?

编辑:

let items = {
item1: {
cost: 2200,
owned: 0,
type: "item type",
name: "item1",
desc: "item1 desc.",
img: "img/item1.gif"
},
item2: {
cost: 4400,
owned: 0,
type: "item type",
name: "item2",
desc: "item2 desc.",
img: "img/item2.gif"
},
};

for (let key of Object.keys(items)) {
if (items[key].owned==0) {
var el = document.createElement('div');
var domString = '<div class="item"><div class="w3 h3 bg-center contain" style="background-image:url(' + items[key].img + ')"></div><span>'+ items[key].name +'</span><span>Price: '+ items[key].cost +'</span><span>'+ items[key].desc +'</span></div>';
el.innerHTML = domString;
el.addEventListener('click', function() {
items[key].owned = 1;
console.log(items[key].name + ' ' + items[key].owned);
});
document.getElementById('shop').appendChild(el.firstChild);
}
}

顺便说一句,我想在点击时更改一项变量。事件监听器在此代码中不起作用。

最佳答案

利用对象键分配id,然后添加事件监听器

for (let key of Object.keys(items)) {
if (items[key].owned==0) {
var el = document.createElement('div');
var domString = '<div id="' + items[key] + '"><div class="w3 h3 bg-center contain" style="background-image:url(' + items[key].img + ')"></div><span>'+ items[key].name +'</span><span>Price: '+ items[key].cost +'</span><span>'+ items[key].desc +'</span></div>';
el.innerHTML = domString;
document.getElementById('shop').appendChild(el.firstChild);
}
}

for (let key of Object.keys(items)) {
document.getElementById(items[key]).addEventListener('click', function() {
items[key].owned = 1
});
}

或者您可以简单地在使用 document.createElement 创建的 div 元素上分配监听器

for (let key of Object.keys(items)) {
if (items[key].owned==0) {
var el = document.createElement('div');
var domString = '<div id="' + items[key] + '"><div class="w3 h3 bg-center contain" style="background-image:url(' + items[key].img + ')"></div><span>'+ items[key].name +'</span><span>Price: '+ items[key].cost +'</span><span>'+ items[key].desc +'</span></div>';
el.innerHTML = domString;
el.addEventListener('click', function() {
items[key].owned = 1
});
document.getElementById('shop').appendChild(el);
}
}

关于javascript - 将数组中的项目渲染到 DOM 中,并在单击时更改每个项目的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54598595/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com