我正在写一个脚本,我有一件事有问题。 它运作顺利:
klocek[i-1].id = i;
但我有一个问题,我知道我可能会犯一些愚蠢的错误,但我不再有任何想法了。
klocek[i-1].setAttribute('data-poo', i);
感谢您的帮助。
错误:Cannot read property 'setAttribute' of undefined
for (var i = 1; i <= LICZBA_KLOCKOW; i++) {
klocek[i-1].id = i;
var rzad = Math.floor(i / 5);
klocek[i].setAttribute('data-poo', i);
}
答案 0 :(得分:1)
看起来你的循环超出界限存在问题。我会完全摆脱LICZBA_KLOCKOW
并将其替换为klocek.length
。
以下是一个可能有用的工作示例:
var klocek = document.querySelectorAll(".klocek");
for (var i = 0; i < klocek.length; i++) {
klocek[i].id = i;
klocek[i].setAttribute("data-poo", i)
}
&#13;
<div class="klocek">
klocek 1
</div>
<div class="klocek">
klocek 2
</div>
<div class="klocek">
klocek 3
</div>
<div class="klocek">
klocek 4
</div>
&#13;
答案 1 :(得分:0)
我唯一能想到的是你没有20个元素。你有更少,但因为你的循环达到20,它试图找到那里没有的第n个元素。
你的循环真的应该是这样的,这样你才能循环遍历节点列表中的实际元素:
Appointments.Clear();
InitializeAppointments();
答案 2 :(得分:0)
我不再使用裸环的原因之一。我建议您改用forEach
。但由于document.querySelectorAll
返回DOM元素集合并且没有此功能,因此您必须将其称为&#34;来自&#34;阵列:
[].forEach.call(klocek, function (item, i) {
item.id = i + 1;
item.setAttribute("data-poo", i + 1);
});