0

私のコードには非常に奇妙な問題があります。

いくつかの要素 (コンテナー要素の子) をループして HTML を変更しようとしていますが、アクセスしようとすると多くの要素が「未定義」を返します。

for(i=0; i<this.shape.length; i++) {
    alert($('#selected_shape_table *').eq(i).find('div').html()); 
    $('#selected_shape_table *').eq(i).find('div').html("Test"); 
}

問題を絞り込むためにさまざまなことを試しましたが、まだ困惑しています。

予想される動作は、各図形をループし、それぞれのテキストを「Test」に変更することです。実際の動作は、要素の半分を変更し、残りの半分を変更しないということです。上記のアラートを追加して、アクセスしている要素を返すと、それらの半分を「見つける」ことがわかりました。たとえば、要素が Square、Circle、Triangle、Rhombus であるリターンは ... Square、undefined、Circle、undefined になります。

これまでに学んだことは次のとおりです。

  • それを使用して要素の数を確認するalert("#selected_shape_table has " + $('#selected_shape_table > *').length + " children.");と、予想される結果の数が返されます。
  • 要素に個別にアクセスしようとすると (つまり$('#selected_shape_table *').eq(i).find('div').html()、i がループではなく手動で指定された数値である場合)、同じ予期しない動作が発生します。2 番目の要素はすべてundefined

何かご意見は?

編集:

最初にマークアップを投稿しなかったことをお詫びします。これらの形状は動的に追加されるため、最初は投稿しませんでした。

<table id="selected_shape_container">
</table> 

要素はそれに追加されます

$('#selected_shape_table').append('<td><div id="' + shape + '" class="selected_shape"> d' + shape + '</div></td>');

4

1 に答える 1

1

使用についてchildren():

for(i=0; i<this.shape.length; i++) {
    alert($('#selected_shape_table').children().eq(i).find('div').html()); 
    $('#selected_shape_table').children().eq(i).find('div').html("Test"); 
}
于 2013-05-23T20:41:29.493 に答える