Java 安全地清除(或移除子元素)div元素
这是我清除给定Java 安全地清除(或移除子元素)div元素,java,gwt,Java,Gwt,这是我清除给定DivElement子元素的代码: int count = rows.getChildCount(); for (int i=0 ; i < count; i++){ Node child = rows.getChild(i); rows.removeChild(child); } 如何安全地删除DivElement的children?请思考此循环中会发生什么。让我们和三个孩子一起跳水: int count=rows.
DivElement
子元素的代码:
int count = rows.getChildCount();
for (int i=0 ; i < count; i++){
Node child = rows.getChild(i);
rows.removeChild(child);
}
如何安全地删除
DivElement的children
?请思考此循环中会发生什么。让我们和三个孩子一起跳水:
int count=rows.getChildCount()
此时,count
显然是3,因此我们从0处的i
开始执行for循环
Node child = rows.getChild(0);
rows.removeChild(child);
现在,行
只有2项,但计数仍然是3项。循环的下一步是,i
Node child = rows.getChild(1);
rows.removeChild(child);
这是包含两项的列表中的第二项-列表中的最后一项,但不是要删除的最后一项。当我们再次进入循环时,i
是两个,但只剩下一个项目了
Node child = rows.getChild(2); // Exception!
一般来说,当您在遍历列表时修改它时,有几种好的方法
- 将循环修改为仅在不删除项时递增。当您需要向前走(并使用列表的顺序)但只需要删除某些项时,这是一种常见的方法
- 不要对循环使用
,而只使用
,并检查列表是否为空-如果不是,请删除第0项。这对于向前走并删除每个项目很有用。简言之:while
while (rows.hasChildNode()) { rows.removeChild(rows.getFirstChild()); }
- 向后遍历列表-以索引作为列表中的最后一项开始,然后每一步减去一个。这样,无论何时删除一个项目,您都不必担心是否有下一个项目,因为只要您高于零,就始终有上一个项目
for (int i = count; i >= 0; i--) { rows.removeChild(rows.getChild(i)); }
- 元素包含html—在大多数情况下,我们可以简单地调用
)。请注意,在IE中处理表时,这存在问题setInnerHTML(“”
rows.setInnerHTML("");
- GWT2.6在元素中有一个新方法,特别是
。只需在div元素上调用此方法。此方法或多或少运行上面讨论的while循环:Element.removeAllChildren()
rows.removeAllChildren();
rows.removeAllChildren();