私のコードには非常に奇妙な問題があります。
いくつかの要素 (コンテナー要素の子) をループして 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>');