如何将日期属性添加到多个表达式?

时间:2017-10-06 17:27:37

标签: javascript jquery

我正在写一个脚本,我有一件事有问题。 它运作顺利:

klocek[i-1].id = i;

但我有一个问题,我知道我可能会犯一些愚蠢的错误,但我不再有任何想法了。

klocek[i-1].setAttribute('data-poo', i);

感谢您的帮助。

错误:Cannot read property 'setAttribute' of undefined

  

enter image description here

  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);
  }

3 个答案:

答案 0 :(得分:1)

看起来你的循环超出界限存在问题。我会完全摆脱LICZBA_KLOCKOW并将其替换为klocek.length

以下是一个可能有用的工作示例:

&#13;
&#13;
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;
&#13;
&#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);
});