Javascript 使用Greasemonkey删除列表元素

Javascript 使用Greasemonkey删除列表元素,javascript,greasemonkey,Javascript,Greasemonkey,我读的一篇博客有一些令人讨厌的评论。我想我会试试我的手在Greasemonkey关掉它们 HTML的基本结构很简单-注释如下所示: <li> <cite>user name ...</cite> comment text </li> 这似乎得到了一切,但代价是在评论可能出现的地方留下了巨大的空白 我是一个完全的javascript新手,所以有人能看到明显的我做错了什么吗?您应该能够通过颠倒for循环的顺序并首先从comments数组的末尾

我读的一篇博客有一些令人讨厌的评论。我想我会试试我的手在Greasemonkey关掉它们

HTML的基本结构很简单-注释如下所示:

<li>
  <cite>user name ...</cite>
  comment text
</li>
这似乎得到了一切,但代价是在评论可能出现的地方留下了巨大的空白


我是一个完全的javascript新手,所以有人能看到明显的我做错了什么吗?

您应该能够通过颠倒for循环的顺序并首先从comments数组的末尾删除元素来修复它:

for ( var i = comments.length - 1; i >= 0; i-- )

您应该能够通过颠倒for循环的顺序并首先从comments数组的末尾删除元素来修复它:

for ( var i = comments.length - 1; i >= 0; i-- )

您看到的行为是由于
注释
是一个错误。当您从DOM中删除
注释
引用的元素时,
注释
会发生变化(并且其
长度
会更新),您的循环将退出窗口

您可以按照@Pat建议的相反顺序循环,或者先通过复制操作从DOM中“取消钩取”节点列表

var comments = Array.slice(document.getElementsByTagName('li'));

然后像以前一样继续。

您看到的行为是由于
注释作为一个。当您从DOM中删除
注释
引用的元素时,
注释
会发生变化(并且其
长度
会更新),您的循环将退出窗口

您可以按照@Pat建议的相反顺序循环,或者先通过复制操作从DOM中“取消钩取”节点列表

var comments = Array.slice(document.getElementsByTagName('li'));

然后像以前一样继续。

我想知道这是否是个问题,所以我尝试创建一个要删除的注释数组,然后从中删除FROM,但没有效果。但到目前为止,这看起来很有希望!我将再测试一段时间,然后回来。我想知道这是否是一个问题,所以我尝试创建一个数组来删除注释,然后从中删除FROM,但没有效果。但到目前为止,这看起来很有希望!我会再测试一会儿,然后回来。