我的 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);