Динамически добавленная функция не работает правильно JavaScript - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь создать таблицу, созданную из пользовательских данных, с этими входными данными, включая флажки. У меня есть функция для того, что делать, когда нажата коробка

function checkTheBox(t)  {           
  var t;
    if (array[t] == 0) {
      array[t] = 1;
    }
    else {
      array[t] = 0;
    }
}

и добавить эту функцию к созданным элементам таблицы, которую я использую

function add() {
  var word = document.getElementById("text").value;
  var tdt = document.createElement("td");
  var tdc = document.createElement("td")
  var node = document.createTextNode(word);
  var checkbox = document.createElement("input");
    checkbox.type = "checkbox";
    checkbox.id = "cb";
    tdc.addEventListener("click", ticker(0), false);
    tdc.stopPropagation;
  tdt.appendChild(node);
  tdc.appendChild(checkbox);
  var tr = document.createElement("tr");
  tr.appendChild(tdt);
  tr.appendChild(tdc);
  var table = document.getElementById("vt");
  table.appendChild(tr);
}

Проблема в том, что всякий раз, когда я нажимаю кнопку «Добавить», чтобы создать новый элемент, он активирует функцию, а затем создает элемент, и флажок ничего не делает, когда я нажимаю на него.

Во-первых, я использую функцию checkTheBox, потому что единственный другой способ работы с флажками - это PHP, в который я еще не углубился.

1 Ответ

0 голосов
/ 28 апреля 2018

Вы выполняете ticker(0) немедленно, вместо того, чтобы сказать, чтобы оно выполнялось при нажатии tdc.

Здесь ...

tdc.addEventListener("click", ticker(0), false);

Это назначит результат выполнения ticker(0) обработчику события щелчка. Вы можете обернуть его в анонимную функцию, чтобы он выполнялся только позже ...

tdc.addEventListener("click", function() { ticker(0); }, false);

Посмотрите здесь документацию для некоторых примеров ...

https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener

Поиск на этой странице "анонимной функции"

...