为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 onchange 属性添加到选中/取消选中时触发的 JavaScript 生成的复选框?

如何将 onchange 属性添加到选中/取消选中时触发的 JavaScript 生成的复选框?

慕村225694 2021-06-29 09:11:06
我有一个很大的 json 人员列表,他们只有一个 id 和一个名字。下面我循环遍历它,添加复选框列表工作正常。我有另一个类似的但具有较短的 json 列表并且代码相同,因此这不是 json 的问题,而是我编写 js 代码的方式。我正在做下面的事情。为 obj.people 中的每个人创建复选框和标签...var peopleLen = obj.People.length;for (var i = 0; i < peopleLen; i++) {    if (i < obj.People.length) {        checkbox = null;        label = null;        linebreak = null;        linebreak = document.createElement('br');        checkbox = document.createElement('input');        checkbox.type = 'checkbox';        checkbox.name = "target";        checkbox.value = obj.People[i].ID;        checkbox.id = "cbTarget" + i.toString();        label = document.createElement('label');        label.id = "lbTarget" + i.toString();        label.htmlFor = "cbTarget" + i.toString();        //This is where I believe it's wrong:        checkbox.onclick = function () {            toggleTargetList(obj.People[i].ID);        };        label.appendChild(document.createTextNode('\u00A0\u00A0' + obj.People[i].Name));        document.getElementById("divcbTargets").appendChild(checkbox);        document.getElementById("divcbTargets").appendChild(label);        //Add a line break:        document.getElementById("divcbTargets").appendChild(linebreak);    }}我分配给它的功能是:function toggleTargetList(t) {    alert(t);}一个简单的警报。当我改变时:toggleTargetList(obj.People[i].ID);至:toggleTargetList(obj.People[0].ID);它提醒正确显示第一个人的 id,但是当它[i]提醒相同的值时(json 对象的 people id 属性的第一个值)。我不明白为什么会这样。它在分配复选框属性时发出警报,而不是在单击实际复选框时发出警报,这是另一个问题。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信