0

オブジェクトが同じ値を持っている理由がわかりません。毎回新しいオブジェクトを作成していると思います。

for (i = row; i <= y; i++) {    
    if (t !== 0 && $('#' + i + '' + col).css('background-color') == 'rgb(0, 0, 0)') {
        console.clear(); //testing
        var obj = {
            rows: i,
            cols: col
        };
        vblack.push(obj);
        vred.length = 0;    

        //testing purposes only, printing contents of vblack array
        for (var j = 0; j < vblack.length; j++) {

            console.log("j " + j + " rows " + obj.rows + " col " + obj.cols);

        };

    } else if (t === 0 && $('#' + i + '' + col).css('background-color') == 'rgb(255, 0, 0)') {
        var obj = {
            rows: i,
            cols: col
        };
        vred.push(obj);
        vblack.length = 0;    
    }
}

これをコンソールログに出力します

j 0 rows 7 col 7
j 1 rows 7 col 7
j 2 rows 7 col 7
j 3 rows 7 col 7

私が印刷することを期待しているのは、行 4 列 7 行 5 列 7 行 6 列 7 行 7 列 7 です。

背景色に応じてテーブルの x 座標と y 座標を記録しようとしています。赤が黒の間にある場合は、vblack 配列を 0 に戻します。

4

2 に答える 2

0

console.logループを代入ループの外に移動します。

for (i = row; i <= y; i++) {    
    if (t !== 0 && $('#' + i + '' + col).css('background-color') == 'rgb(0, 0, 0)') {
        var obj = {
            rows: i,
            cols: col
        };
        vblack.push(obj);
        vred.length = 0;    

    } else if (t === 0 && $('#' + i + '' + col).css('background-color') == 'rgb(255, 0, 0)') {
        var obj = {
            rows: i,
            cols: col
        };
        vred.push(obj);
        vblack.length = 0;    
    }
}

//testing purposes only
console.clear();
console.log("Black:");
for (var j = 0; j < vblack.length; j++) {
    console.log("j " + j + " rows " + vblack[j].rows + " col " + vblack[j].cols);
};
console.log("Red:");
for (var j = 0; j < vred.length; j++) {
    console.log("j " + j + " rows " + vred[j].rows + " col " + vred[j].cols);
};
于 2013-11-11T18:43:26.563 に答える
0

Javascript 配列で注目すべき点は、インデックスが常に連続しているとは限らないことです。それ以外の

for( var j = 0....

好む

for (j in vblack)

vblack が常に 0 ~ n の要素を持つと考えるのは良いことですが、常にそうであるとは限らず、.length は n+1 を報告します。

于 2013-11-11T18:51:24.167 に答える