Javascript 使用addEventlistener修改对象
我有一个对象数组,如下所示:Javascript 使用addEventlistener修改对象,javascript,html,Javascript,Html,我有一个对象数组,如下所示: 0:{name:“a”,id:0,垃圾桶:false} 1:{name:“b”,id:1,trash:false} 2:{name:“c”,id:2,trash:false} 3:{name:“d”,id:3,trash:false} 4:{name:“e”,id:4,trash:false} 5:{name:“f”,id:5,trash:false}我建议您使用data-*属性,这些属性很容易通过getAttribute读取(或者如果您碰巧使用jQuery,则使
0:{name:“a”,id:0,垃圾桶:false}
1:{name:“b”,id:1,trash:false}
2:{name:“c”,id:2,trash:false}
3:{name:“d”,id:3,trash:false}
4:{name:“e”,id:4,trash:false}
5:{name:“f”,id:5,trash:false}
我建议您使用data-*
属性,这些属性很容易通过getAttribute
读取(或者如果您碰巧使用jQuery,则使用data()
)
然后,您可以非常轻松地读取作业
和id
,并将后者转换为列表TODO
数组的索引
var listTodo=[{name:“a”,id:0,trash:false},
{name:“b”,id:1,trash:false},
{name:“c”,id:2,trash:false}];
var list=document.querySelector(“我的列表”);
list.addEventListener(“单击”,(e)=>{
if(例如target.getAttribute(“数据作业”)=“删除”){
e、 target.parentElement.remove();
var idx=parseInt(e.target.getAttribute(“数据id”),10);
log((listTodo[idx].trash=true));
console.log(listTodo);
}
});代码>
-
洛雷姆1
-
洛雷姆2
-
洛雷姆
我建议您使用数据-*
属性,这些属性很容易通过getAttribute
读取(如果您碰巧使用jQuery,则使用data()
)
然后,您可以非常轻松地读取作业
和id
,并将后者转换为列表TODO
数组的索引
var listTodo=[{name:“a”,id:0,trash:false},
{name:“b”,id:1,trash:false},
{name:“c”,id:2,trash:false}];
var list=document.querySelector(“我的列表”);
list.addEventListener(“单击”,(e)=>{
if(例如target.getAttribute(“数据作业”)=“删除”){
e、 target.parentElement.remove();
var idx=parseInt(e.target.getAttribute(“数据id”),10);
log((listTodo[idx].trash=true));
console.log(listTodo);
}
});代码>
-
洛雷姆1
-
洛雷姆2
-
洛雷姆
您应该像其他人所说的那样使用数据属性数据作业
,然后您可以在javascript单击处理程序中执行3个步骤
- 1:检查单击的元素是否具有
数据作业=“删除”
。使用dataset
属性if(e.target.dataset.job==“delete”)
- 2:将其从DOM
e.target.parentElement.Remove()中删除代码>
- 3:更改数组中的“垃圾”值。获取所单击元素
e.target.id
的id
,并将其用作数组键:listTodo[e.target.id].trash=true代码>
就这些。下一步是javascript函数,然后是下面的一个片段,显示它的工作情况
var list = document.getElementById("list");
list.addEventListener("click", (e) => {
// Check if the clicked element has the data-job="delete"
if (e.target && e.target.dataset.job == "delete") {
// Remove the element from the DOM
e.target.parentElement.remove();
// set trash to true for this element in the array using this id as the array key
listTodo[e.target.id].trash = true;
}
});
var listTodo={
0:{name:“a”,id:0,垃圾箱:false},
1:{name:“b”,id:1,trash:false},
2:{name:“c”,id:2,trash:false},
3:{name:“d”,id:3,trash:false},
4:{name:“e”,id:4,trash:false},
5:{name:“f”,id:5,trash:false}
};
var list=document.getElementById(“列表”);
list.addEventListener(“单击”,(e)=>{
//检查单击的元素是否具有数据作业=“删除”
if(e.target&&e.target.dataset.job==“删除”){
//从DOM中删除单击的元素
e、 target.parentElement.remove();
//使用id作为数组键,为单击的元素设置trash=true
listTodo[e.target.id].trash=true;
console.log(“删除元素”+e.target.id);
}
});代码>
i{显示:块;高度:20px;宽度:20px;左边距:10px;}
-
0
-
1.
-
2.
-
3.
-
4.
-
5.
您应该像其他人所说的那样使用数据属性数据作业
,然后您可以在javascript单击处理程序中执行3个步骤
- 1:检查单击的元素是否具有
数据作业=“删除”
。使用dataset
属性if(e.target.dataset.job==“delete”)
- 2:将其从DOM
e.target.parentElement.Remove()中删除代码>
- 3:更改数组中的“垃圾”值。获取所单击元素
e.target.id
的id
,并将其用作数组键:listTodo[e.target.id].trash=true代码>
就这些。下一步是javascript函数,然后是下面的一个片段,显示它的工作情况
var list = document.getElementById("list");
list.addEventListener("click", (e) => {
// Check if the clicked element has the data-job="delete"
if (e.target && e.target.dataset.job == "delete") {
// Remove the element from the DOM
e.target.parentElement.remove();
// set trash to true for this element in the array using this id as the array key
listTodo[e.target.id].trash = true;
}
});
var listTodo={
0:{name:“a”,id:0,垃圾箱:false},
1:{name:“b”,id:1,trash:false},
2:{name:“c”,id:2,trash:false},
3:{name:“d”,id:3,trash:false},
4:{name:“e”,id:4,trash:false},
5:{name:“f”,id:5,trash:false}
};
var list=document.getElementById(“列表”);
list.addEventListener(“单击”,(e)=>{
//检查单击的元素是否具有数据作业=“删除”
if(e.target&&e.target.dataset.job==“删除”){
//从DOM中删除单击的元素
e、 target.parentElement.remove();
//为单击的对象设置trash=true