要在 Javascript 中修改此关键字
To modify this keyword in Javascript
如何用原来的调用对象替换this
?我知道这是一种简化的呈现方式,但我试图理解 this
所引用的对象。
for(var i=0; i<list.length; i++){
list[i].addEventListener("click", liClick);
}
function liClick(){
this.classList.toggle("done");
}
我的理解是this
指的是被点击的list[i]
,但是当我尝试用
function liClick(){
list[i].classList.toggle("done");
}
写错了,怎么修改?谢谢。
this
关键字未引用列表项。
您应该将 list[i]
传递给函数
函数列表点击接收事件可以直接访问e.target或者做回调函数传item
for(var i=0; i<list.length; i++){
list[i].addEventListener("click", () => liClick(list[i]) );
}
const liClick = (listItem) => {
listItem.classList.toggle("done");
}
你可以这样做:
for (var i = 0; i < list.length; i++) {
list[i].addEventListener("click", liClick);
}
function liClick(e) {
e.target.classList.toggle("done");
}
如何用原来的调用对象替换this
?我知道这是一种简化的呈现方式,但我试图理解 this
所引用的对象。
for(var i=0; i<list.length; i++){
list[i].addEventListener("click", liClick);
}
function liClick(){
this.classList.toggle("done");
}
我的理解是this
指的是被点击的list[i]
,但是当我尝试用
function liClick(){
list[i].classList.toggle("done");
}
写错了,怎么修改?谢谢。
this
关键字未引用列表项。
您应该将 list[i]
传递给函数
函数列表点击接收事件可以直接访问e.target或者做回调函数传item
for(var i=0; i<list.length; i++){
list[i].addEventListener("click", () => liClick(list[i]) );
}
const liClick = (listItem) => {
listItem.classList.toggle("done");
}
你可以这样做:
for (var i = 0; i < list.length; i++) {
list[i].addEventListener("click", liClick);
}
function liClick(e) {
e.target.classList.toggle("done");
}