【问题标题】:Dynamically added function is not working correctly JavaScript动态添加的功能无法正常工作 JavaScript
【发布时间】:2018-04-28 21:38:24
【问题描述】:

我正在尝试创建一个由用户输入组成的表格,这些输入包括复选框。 我有一个功能,当单击该框时该做什么

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,我还没有深入研究。

【问题讨论】:

标签: javascript function html-table dynamically-generated


【解决方案1】:

您正在立即执行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

在该页面中搜索“匿名函数”

【讨论】:

  • 不用担心 - 很乐意提供帮助 :)
猜你喜欢
  • 2020-05-25
  • 1970-01-01
  • 2017-09-11
  • 2017-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多