表格单元格循环错误地生成未定义的索引

时间:2014-02-06 00:14:56

标签: javascript jquery arrays loops indexing

$('#process').click(function() {
    var char_matrix = [];
    $('#char_input tr').each(function(e) {
        $(this).children('td').each(function() {
            var a = $(this).css('background-color').replace(/\D+/g, '');
            if (a === '2551650') {
                char_matrix[e] += "0";
            } else {
                char_matrix[e] += "1";
            }//END IF
        });//END EACH
        alert(char_matrix[e]);
    });//END EACH
});//END FUNC

此代码循环遍历每个表行,每个行单元格创建一个1和0的数组。数组的每个索引都是不同的行,每个索引由一系列1和0组成,表示每行的背景颜色状态。预期输出类似于:

10101010
10101010
10101010
10101010
10101010
10101010
10101010
10101010

实际输出为:

undefined10101010
undefined10101010
undefined10101010
undefined10101010
undefined10101010
undefined10101010
undefined10101010
undefined10101010

我不知道是什么导致每一行在开头都没有定义,而且非常烦人。除了正确的8个二进制值之外,未定义的索引实际上已添加到数组中。我已经尝试将char_matrix定义为全局和局部变量,但无济于事。

我也意识到我可以直接使用Javascript,但在这个项目中,这不是我的选择。

1 个答案:

答案 0 :(得分:2)

此行之后

$('#char_input tr').each(function(e) {

添加此行

  char_matrix[e] = ""

否则char_matrix[e]最初未定义。这与您的结果一致

undefined + "1" === "undefined1"