0

私の目標は、ajaxResponse1 の ID を持つテーブルを反復処理し、各 COLUMN の値を個別の配列に格納することです。valuesArr の各エントリは、個々の値の配列を含む列になります。

new Object の代わりに new Array を使用してみましたが、画面にアラートが出力されていないようです。.push の組み合わせを使用して、新しい各列の値を適切な配列に取得する必要がありますか? それが明らかであることを願っています。何か案は?ありがとう!

var valuesArr = new Object();

$('#ajaxResponse1 tr').each( function() {
    var colNum = 0;
    $('th, td', this).each( function() {
        valuesArr[colNum] = valuesArr[colNum].push( $(this).html() );   
        colNum++;
    });
});

alert(JSON.stringify(valuesArr));
4

3 に答える 3

2

配列が実際に存在するまで、配列に何かをプッシュすることはできません。

したがって、内部ループの各反復で、最初の配列が存在しない場合は作成する必要があります。

var valuesArr = [];

$('#ajaxResponse1 tr').each( function() {
    $('th, td', this).each( function(i, el) { // nb: implicit column number
        var html = $(this).html();
        if (i in valuesArr) {
            valuesArr[i].push(html);
        } else {
            valuesArr[i] = [ html ];  // new array with one element
        }
    }
});
于 2012-05-04T16:54:32.577 に答える
1

push() メソッドは、配列の最後に新しい項目を追加し、新しい長さを返します。だから、それを変更してみてください:

valuesArr[colNum].push( $(this).html() );  

を削除するだけです=

さらに、初めて使用する前に配列を初期化する必要があります。試してください:

valuesArr[colNum] = valuesArr[colNum] ? valuesArr[colNum] : [];

ここで完全な動作例を見つけることができます http://jsfiddle.net/57A9z/

于 2012-05-04T16:52:01.123 に答える
0
var valuesArr = [];
var r = 0;
var c = 0;

$('#ajaxResponse1 tr').each( function() {
    valuesArr[r] = [];
    $('th, td', this).each( function() {
        valuesArr[r][c] = $(this).html();   
        c++;
    });
    c = 0;
    r++;
});
于 2012-05-04T16:52:52.017 に答える