1

2 次元配列を JavaScript 関数に渡そうとしていますが、2 次元配列の最初の要素しか取得できません。以下は私のコードの抜粋です:

header = [['Objective','summary'],['Status','txtHealth']];

...


function setTableHeader(data){
    console.log(data);
    var table = document.getElementById('tblData').tHead.insertRow(0);

    for (var i = 0; i < header.length; i++)
        table.insertCell(i).innerHTML = data[i];

};


/*calling the function*/
setTableHeader.apply(this,header);

コンソール ログには ['Objective','summary'] のみが表示されます。これは、配列の最初のメモリ ブロックのメモリ位置へのポインタのみが関数に渡されるためですか?

私は webdev が初めてで、ローカル変数ではなくグローバル変数を使用する必要があるかどうかにも興味がありますか?

4

3 に答える 3

3

最初の問題は、apply引数を配列として受け取るものを使用していることです。

setTableHeader.apply(this,[header]);

そうしないと、ヘッダー配列の各行が独自の引数として関数に渡されます。だからあなたのデータはちょうど['Objective','summary']

ただし、次のように関数を呼び出すことができます。

  setTableHeader(header);

また、ヘッダーがグローバルとして定義されている場合、引数として関数にデータを渡す必要はありません。ただし、 for ループheaderは、渡された長さではなく、配列の長さをチェックしますdata。問題が原因でここに不一致がありますapply

于 2013-09-23T00:26:35.447 に答える
1

ループはではなくforまでループする必要があります。data.lengthheader.length

于 2013-09-23T00:26:08.357 に答える