0

デモ: http://jsfiddle.net/gc9S3/10/

配列の行ごとに、「for」ループで [i] 要素を出力する必要があります。たとえば、以下の JavaScript が UI に次のように出力するようにします。

1 2 3

(もちろん、各数値は div タグでラップされます。)

ただし、JSFiddle デモからわかるように、配列の最後の要素の要素のみが吐き出されています。「for」ループに何か問題がありますか?

var myArray = [
  ['stringa', 'stringb', 'stringc', 1],
  ['stringd', 'stringe', 'stringf', 2],    
  ['stringg', 'stringh', 'stringi', 3]
];

for (var i=0; i< myArray.length; i++) {
$('#container').html('<div class="hidden caption' + i + '">' + myArray[i][3] + '</div>');
}

<div id="container"></div>
4

3 に答える 3

2

各反復ですべてのコンテンツを置き換え、新しい要素を追加する必要があります。

$('#container').append('<div class="hidden caption' + i + '">' + myArray[i][3] + '</div>');
于 2013-10-15T00:41:48.573 に答える
1

@epascarelloが述べたように、繰り返しごとにhtmlを上書きしています。

また、可能であれば DOM に変更を加えないようにしてください。この場合、マークアップを変数に保存し、for ループの後に DOM を更新します。問題を解決し、DOM を 1 つだけ変更します。

var html = '';
for (var i=0; i< myArray.length; i++) {
    html += '<div class="hidden caption' + i + '">' + myArray[i][3] + '</div>';
}
$('#container').html(html);

更新された JSFiddle

于 2013-10-15T00:56:28.480 に答える