.Onclick и .addEventListener ("click") оба не ограничены нажатием кнопки - PullRequest
0 голосов
/ 15 января 2020

(новичок в программировании, совсем недавно снял с меня колеса JS для обработки).

Я пытаюсь сделать простую игру из Ti c Ta c Toe; чтобы выполнить sh это, я создал вложенный элемент для l oop, который определяет и стилизованные кнопки dr aws 9 на веб-странице, а также вставил их в положение [0] в первый массив массива кнопок (две другие позиции внутри заняты логическими значениями, которые я буду использовать как индикатор того, принадлежит ли кнопка playerX или playerO). Затем я пытаюсь сделать так, чтобы при нажатии кнопки с помощью кнопки [идентификатор номера кнопки, 0-8] [0] выполнялась функция setSquare, аргумент которой равнялся номеру кнопки (идентификатору номера кнопки).

Но когда я запускаю программу и проверяю консоль, она уже запустила программу еще до того, как я что-то щелкну (когда я помещаю ее внутрь для l oop), или она работает один раз, а затем всегда по умолчанию последний Я застрял в этом в течение нескольких часов, и я перерыл так много. Любой вклад? Кроме того, я извиняюсь, если это не хороший вопрос. Никаких обид, если его сняли по какой-либо причине.

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 или любой другой материал.

1 Ответ

2 голосов
/ 15 января 2020

addEventListener ожидает ссылку на функцию, а не вызов функции.
Таким образом, вы просто пишете (без скобок)

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

Поскольку вы хотите передать аргумент своей функции, вы может обернуть его в анонимную функцию

button[0][0].addEventListener("click", function() { setSquare (0); });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...