0

我正在尝试创建一个从数组中读取元素并将其值分配<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>获得数组值。它应该从 3rd 开始发生<tr>,这就是为什么我把“如果”作为条件。所以,第一个<tr>得到“categories[1]”,第二个<tr>得到“categories[2]”,依此类推。

4

1 回答 1

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]);
于 2012-05-15T12:46:13.907 回答