如何禁用具有特定id模式的div块?

时间:2012-01-04 09:55:02

标签: javascript html dom userscripts

我想写一个greasemonkey脚本来禁用某个页面上的div。 在页面的任何给定负载上,我不知道div在div中的位置,但我知道它总是被称为<div id = "alertPanel"> ....</div>

我如何禁用此div?

我的初步想法是:

var myDivs= document.getElementsByTagName('div');

for (i=0; i<myDivs.length; i++)
{

  if (myDivs[i].<get id property somehow> = "alertPanel")
     myDivs[i].style.visibility = 'hidden';
 }

但是你可以告诉我,我一直在访问id属性以进行相等检查。

我很自然地使用文本编辑器来编写这个 - 我猜一个标准的javascript编辑器会在输入myDivs[i].之后给出一个自动完成列表

2 个答案:

答案 0 :(得分:13)

如果它有id,您可以使用document.getElementById

var div = document.getElementById("alertPanel");

然后如果它存在,你可以删除它(可能是一个坏主意)或隐藏它:

if (div) {
    div.style.display = "none"; // Hides it
    // Or
    // div.parentNode.removeChild(div); // Removes it entirely
}

更新:重新评论另一个答案:

  谢谢你的回答。您的statemt是否也适用于包含iframe的网页。有问题的div在iframe中。我尝试过ypur解决方案但不幸的是它没有用。也许链接到页面将有所帮助:tennis.betfair.com我要禁用的div是id为:minigamesContainer

如果元素位于iframe,那么您必须在getElementById上的文档上调用iframe,因为iframe是单独的窗口并且是单独的文档。如果您知道id的{​​{1}},则可以使用iframe获取document.getElementById实例,然后使用iframe访问其文档,然后在那个上使用contentDocument来获取“minigamesContainer”元素:

getElementById

var iframe, div; iframe = document.getElementById("the_iframe_id"); if (iframe) { try { div = iframe.contentDocument.getElementById("minigamesContainer"); if (div) { div.style.display = "none"; } } catch (e) { } } 是因为访问iframe内容时可能存在安全性错误;我不太了解Greasemonkey以了解SOP是否适用于它。我倾向于认为它没有,但更安全......)

如果你不知道try/catch的{​​{1}}或者它没有id,你可以通过document.getElementsByTagName获取它们来循环遍历所有这些,然后循环:

iframe

参考文献:

答案 1 :(得分:1)

在有效的HTML中,您只能拥有具有特定ID的元素。所以:

document.getElementById('alertPanel').style.visiblity = 'hidden';

但如果您仍然需要迭代所有div并检查他们的ID,那么这应该有效:

if (myDivs[i].id == "alertPanel") myDivs[i].style.visibility = 'hidden';