。Onclick和.addEventListener(“ click”)都不仅限于单击按钮时

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

((编程的新手,最近才卸下了我的ProcessingJS轮子)。

我正在尝试制作一个井字游戏的简单游戏;为此,我制作了一个嵌套的for循环,该循环定义并在Web页面上绘制9个样式化的按钮,并将它们推入Button Array的第一个数组中的[0]位置(其中的两个位置被boolean占据,我将用它来指示按钮是否为playerX或playerO所拥有。然后,我尝试制作它,以便在按下按钮时使用button [按钮编号标识符,0-8] [0],它运行setSquare函数,其参数等于按钮编号(按钮编号标识符)。 >

但是当我运行程序并检查控制台时,它甚至在我单击任何东西(将其放入for循环中之前)就已经运行了该程序,或者它只能运行一次,然后始终默认为最后一个。我已经被这个问题困扰了几个小时了,我翻遍了很多东西。有输入吗?另外,如果这不是一个好问题,我也很抱歉。如果由于任何原因而将其拆除,则不会有任何难过的感觉。

var setSquare = function(q) {
            if (button[q][1] === false && button[q][2] === false) {
                button[q][1] = true;
                console.log("button" + q + " now belongs to PlayerX");
            } else if (button[q][1] === false) {
                button[q][2] = true;
                console.log("button" + q + " now belongs to PlayerO");
            } else {
                millieBot();
            }
        }     

        var button = [ [/*0*/], [/*1*/], [/*2*/], [/*3*/], [/*4*/], [/*5*/], [/*6*/], [/*7*/], [/*8*/] ];  //Just the place where I'm gonna put all the buttons/squares, alongside the fact of whether they are owned by X or O. (Inserted by a for loop, to make it look something like: button = [document.createElement("button"), false, false], [...])

        button[0][0].addEventListener("click", setSquare(0));

重要提示:我现在只使用纯JavaScript和HTML(JS DOM),因为在开始使用jQuery或其他任何东西之前,我想首先提高基础知识。

((编程的新手,最近刚摘下我的ProcessingJS轮子)。我正在尝试制作一个井字游戏的简单游戏;为此,我创建了一个嵌套的for循环,该循环定义并绘制9 ...

javascript html dom
1个回答
0
投票

addEventListener期望引用函数而不是函数调用。因此,您只需编写(不带括号)

© www.soinside.com 2019 - 2024. All rights reserved.