删除所有图像

ste*_*ven 14 javascript

什么JavaScript会删除所有图片代码?

bob*_*nce 38

上一个答案将仅删除每隔一个图像.

记住getElementsByTagName或其他DOM方法返回的NodeLists是'live'.这意味着当您删除图像0时,图像1-n向下移动到0-(n-1); 这是一种"破坏性的迭代".

要避免这种情况,要么创建NodeList的静态Array副本(因为jQuery答案正在有效地执行),要么更快,只需向后迭代列表:

for (var i= document.images.length; i-->0;)
    document.images[i].parentNode.removeChild(document.images[i]);
Run Code Online (Sandbox Code Playgroud)


n13*_*313 14

UPD:对不起,这是一个错误的答案,请参阅评论.是一个正确的答案.

像这样的东西:

images = document.getElementsByTagName('img');
for (i = 0; i < images.length; i++) {
    images[i].parentNode.removeChild(images[i]);
}
Run Code Online (Sandbox Code Playgroud)

或者稍微修改我第一次回答这个问题:

var images = document.getElementsByTagName('img');
var l = images.length;
for (var i = 0; i < l; i++) {
    images[0].parentNode.removeChild(images[0]);
}
Run Code Online (Sandbox Code Playgroud)

  • 建议改进:使用'var'正确声明'images'和'i'. (2认同)
  • 这不起作用 - 请参阅下面的说明. (2认同)

mac*_*die 12

这也应该有效:

var images = document.getElementsByTagName('img');
while(images.length > 0) {
    images[0].parentNode.removeChild(images[0]);
}
Run Code Online (Sandbox Code Playgroud)


Dom*_*ger 6

使用jQuery:

$("img").remove();
Run Code Online (Sandbox Code Playgroud)

  • 我是否必须将整个库包含在一个简单的任务中? (5认同)
  • +1 jQuery ......无需重新发明轮子.:-) (2认同)
  • @beggs:我不同意.当没有迹象表明JQuery框架正在使用时,给出一个JQuery答案,就像给出一个基于.NET的C++问题答案.如果你使用它很好,它可以作为一个评论,它可能是考虑,但它不是一个非Jquery问题的答案.n1313答案几乎不是火箭科学,并且在你的页面中添加了一个大的框架.js,这样你就不会"重新发明轮子",这是没有意义的. (2认同)
  • jQuery实际上并不是"整个库".它是一个56k的脚本文件 - 实际上不是那么"大".也许是矫枉过正的这一个删除图像工作.如果这真的是*唯一*正在完成的事情,但在其他方面是非常轻量级使用.我认为jQuery对javascript问题的回答是完全合适的. (2认同)