我的代码有一个非常非常奇怪的问题。
我试图遍历一些元素(容器元素的子元素)来改变它们的HTML,但是当我尝试访问它们时,它们中的许多都返回'undefined'。
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是手动指定的数字而不是循环),它表现出相同的意外行为 - 每个第二个元素是undefined
有什么想法?
修改:
最初没有发布标记的道歉。这些形状是动态添加的,这就是我最初没有发布的原因。
<table id="selected_shape_container">
</table>
并使用
将元素添加到其中 $('#selected_shape_table').append('<td><div id="' + shape + '" class="selected_shape"> d' + shape + '</div></td>');
答案 0 :(得分: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");
}