我的 JavaScript 函数在未被调用的情况下运行
My JavaScript function runs without being called
函数 tablePush
在单击项目时将 id 推送到 table。
但是,它运行时没有点击,我不明白为什么。
这是我的代码:
function tablePush() {
console.log('OK');
if (pickPicture) {
console.log('TRUE');
} else {
console.log('on rentre dans le else');
console.log(this);
var idPic = this.getAttribute('id');
console.log(idPic);
table.push(idPic);
pickPicture = true;
}
}
var picture = document.getElementsByClassName('picture'),
table = [],
pickPicture = false;
for (var i = 0; i < picture.length; i++){
picture[i].addEventListener('click', tablePush());
}
您在添加事件侦听器时正在调用该函数。
您需要从
更新
picture[i].addEventListener('click', tablePush());
至
picture[i].addEventListener('click', tablePush);
行:
picture[i].addEventListener('click', tablePush());
^^
不是添加函数tablePush
,而是tablePush()
调用的结果。之所以如此,是因为末尾的括号 ()
表示 "invoke this function now"。要更正您的代码,请使用:
picture[i].addEventListener('click', tablePush);
^ no parens
你在调用它。
您需要注册函数 tablePush
(而不是调用它):
picture[i].addEventListener('click', tablePush);
函数 tablePush
在单击项目时将 id 推送到 table。
但是,它运行时没有点击,我不明白为什么。
这是我的代码:
function tablePush() {
console.log('OK');
if (pickPicture) {
console.log('TRUE');
} else {
console.log('on rentre dans le else');
console.log(this);
var idPic = this.getAttribute('id');
console.log(idPic);
table.push(idPic);
pickPicture = true;
}
}
var picture = document.getElementsByClassName('picture'),
table = [],
pickPicture = false;
for (var i = 0; i < picture.length; i++){
picture[i].addEventListener('click', tablePush());
}
您在添加事件侦听器时正在调用该函数。
您需要从
更新picture[i].addEventListener('click', tablePush());
至
picture[i].addEventListener('click', tablePush);
行:
picture[i].addEventListener('click', tablePush());
^^
不是添加函数tablePush
,而是tablePush()
调用的结果。之所以如此,是因为末尾的括号 ()
表示 "invoke this function now"。要更正您的代码,请使用:
picture[i].addEventListener('click', tablePush);
^ no parens
你在调用它。
您需要注册函数 tablePush
(而不是调用它):
picture[i].addEventListener('click', tablePush);