我正在尝试创建一个从数组中读取元素并将其值分配给表的<tr>
标记的函数。
所以我写了这段代码:
(function () {
"use strict";
var selectQG = {
distributeCat : function (tablerow, categories) {
var tr = $(tablerow), tri = 0;
tr.each(function () {
if (tri > 2) {
for (var i = 0; i<categories.length; i++) {
this.setAttribute('categoria',categories[i]);
}
}
tri++;
});
}
}
var categories = ['1,2','3,4','5,6','7,8','9,10','11,12'];
selectQG.distributeCat('table tr', categories);
} () );
检查这个小提琴,看看html代码和功能是否有效:http://jsfiddle.net/5kqEf/2/)
循环正在执行6次,我无法弄清楚原因。我仍然是编程的新手,所以我需要一些帮助才能知道我做错了什么。任何帮助都将非常感激。
编辑:意思是每个<tr>
获取数组值。它应该从第3 <tr>
开始发生,这就是为什么我把那个“if”条件化。因此,第一个<tr>
获取“类别[1]”,第二个<tr>
获取“类别[2]”等等。
答案 0 :(得分:1)
外循环执行9次,因为你有9个表tr元素。 .each将循环遍历每个tr元素,恰好是9个元素。见http://jsfiddle.net/5kqEf/4/
内部for循环遍历6个元素(数组var categories = ['1,2','3,4','5,6','7,8','9,10','11,12'];
),所以这很有意义......
你的确切问题是什么?
如果你想根据索引选择一个类别(如果tr元素多于类别,则重新开始),你可能想要替换它:
for (var i = 0; i<categories.length; i++) {
this.setAttribute('categoria',categories[i]);
}
用这个
var index = tri % categories.length;
this.setAttribute('categoria',categories[index]);