删除HTML集合中的所有元素
Remove all elements in the HTML Collection
我有以下代码。当我试图删除所有的图像,只有3被删除。感觉好奇怪。这是什么原因呢?
<script type="text/javascript">
function c() {
var images = document.getElementsByTagName('img');
for (var i = 0; i < images.length; i++) {
images[i].parentNode.removeChild(images[i]) //or images[i].remove()
}
}
</script>
<img src="http://unsplash.it/200/300/" />
<img src="http://unsplash.it/200/300/" />
<img src="http://unsplash.it/200/300/" />
<img src="http://unsplash.it/200/300/" />
<img src="http://unsplash.it/200/300/" />
<input id="clickMe" type="button" value="Delete Images" onclick="c()" />
使用while循环
<script type="text/javascript">
function c() {
var images = document.getElementsByTagName('img');
var counter = 0;
while(images.length){
images[counter].parentNode.removeChild(images[counter])
}
}
</script>
<img src="http://unsplash.it/200/300/" />
<img src="http://unsplash.it/200/300/" />
<img src="http://unsplash.it/200/300/" />
<img src="http://unsplash.it/200/300/" />
<img src="http://unsplash.it/200/300/" />
<input id="clickMe" type="button" value="Delete Images" onclick="c()" />
你需要反向循环。如果向前循环,当您删除一个元素时,您将修改剩余元素的索引。所以,这样做:
for (var i = images.length - 1; i >= 0; i--) {
// Remove first element (at [0]) repeatedly
images[0].parentNode.removeChild(images[0]);
}
function c() {
var images = document.getElementsByTagName('img');
for (var i = images.length-1; i > -1; i--) {
images[i].parentNode.removeChild(images[i]) //or images[i].remove()
}
}
function c1() {
var images = document.getElementsByTagName('img');
for (var i = 0; i < images.length; i++) {
images[i].parentNode.removeChild(images[i]) //or images[i].remove();
//you can also decrement i by one with each delete, more than one way to skin a cat as they say.
i--;
}
}
<img src="http://unsplash.it/200/300/" />
<img src="http://unsplash.it/200/300/" />
<img src="http://unsplash.it/200/300/" />
<img src="http://unsplash.it/200/300/" />
<img src="http://unsplash.it/200/300/" />
<input id="clickMe" type="button" value="Delete Images" onclick="c1()" />
为了配合我的评论,你也可以向后迭代,以避免每次迭代都要调整i。
for (var i = images.length-1; i >-1; i--) {
images[i].parentNode.removeChild(images[i]) //or images[i].remove()
}
相关文章:
- 我应该怎么做才能避免在网页上移动元素(html、css、jQuery)
- 更改元素HTML,但忽略最后一个子项
- 增加在选择元素HTML中搜索的时间
- Jquery无法获取元素html
- 从所选元素 html 上方的元素获取属性值
- 在 JS 的单选按钮元素 (HTML) 中使用 title 属性
- 如何在页面上播放每个音频元素(HTML,JQuery,Javascript)
- 我需要一种新的方法来检测元素 HTML 是否有更改
- 获取父元素 html 以及子内容
- AngularJS指令:如何在ng-repeat中动态更改元素html
- html 属性中的引号被标记为 ”来自元素.html()的结果
- 在指令's链接中替换angular元素html
- 如果元素有子元素html元素
- 如何下推表格中的元素- HTML
- 如何在纯javascript中使用变量插入数组值,如元素HTML
- jQuery textilate .js -如何“重置”元素HTML并重新启动动画
- 将元素HTML附加到新附加的textarea中
- 在添加类的情况下,CSS 3的过渡是否不能与模板元素(HTML 5)一起工作?
- jQuery没有更新DOM元素HTML
- 在jQuery中更快地替换元素HTML