我的JavaScript函数运行时没有被调用[重复]

问题描述 投票:1回答:3

这个问题在这里已有答案:

函数tablePush在点击某个项目时将id推送到表格。 但是,它没有点击运行,我不明白为什么。

这是我的代码:

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());
}
javascript arrays function-call
3个回答
2
投票

你在叫它。 你需要注册函数tablePush(而不是调用它):

picture[i].addEventListener('click', tablePush);

5
投票

这条线:

picture[i].addEventListener('click', tablePush());
                                              ^^

不添加函数tablePush,但调用tablePush()的结果。这是如此,因为最后的parens ()意味着“现在调用此函数”。要更正您的代码,请使用:

picture[i].addEventListener('click', tablePush);
                                              ^ no parens

3
投票

您在添加事件侦听器时调用该函数。

你需要更新

picture[i].addEventListener('click', tablePush());

picture[i].addEventListener('click', tablePush);
© www.soinside.com 2019 - 2024. All rights reserved.