У меня большой список людей в json, у них просто есть идентификатор и имя.
Ниже я зацикливаюсь на этом, и он работает нормально, добавляя список флажков.
У меня есть еще один похожий, но с более коротким списком 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);
Оповещает правильно отображающий идентификатор первого лица, однако, когда он [i]
, он предупреждает об этом же значении (первое значение свойства id объекта json).
Не понимаю, почему это так.
Он предупреждает о назначении атрибута флажка, а не о том, когда установлен фактический флажок, что является другой проблемой.