Как отключить блоки div, имеющие определенный шаблон id?

Я хотел бы написать сценарий greasemonkey, чтобы отключить div на определенной странице. На любой заданной загрузке страницы я не знаю, где в DOM будет 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 ответов


если он имеет id, вы можете использовать document.getElementById:

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

тогда, если он существует, вы можете либо удалить его (возможно, плохая идея), либо скрыть его:

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

обновление: Re ваш комментарий на другой ответ:

спасибо за ваш ответ. Применяется ли ваш statemt к странице с iframes тоже. Рассматриваемый div находится в iframe. Я пробовал решение ypur, и, к сожалению, это не сработало. возможно, ссылка на страницу поможет: tennis.betfair.com в div я хочу, чтобы отключить это с ID: minigamesContainer

если элемент находится в iframe, то вы должны позвонить getElementById в документе, в iframe С iframes являются отдельными окнами и имеют отдельные документы. Если вы знаете id на iframe, вы можете использовать document.getElementById для получения iframe экземпляр, а затем использовать contentDocument для доступа к его документу, а затем использовать getElementById on это получить элемент "minigamesContainer":

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) {
    }
}

(том try/catch есть ли из-за потенциальной ошибки безопасности доступа к содержимому iframe; я не знаю Greasemonkey достаточно хорошо, чтобы знать, является ли СОП относится к нему. Я склонен предполагать, что нет, но лучше в безопасности...)

если вы не знаете id на iframe или если у него нет одного, вы можете просто пройти через все из них, получив их с document.getElementsByTagName и затем петля:

var iframes, index, iframe, div;
iframes = document.getElementsByTagName("iframe");
for (index = 0; index < iframes.length; ++index) {
    iframe = iframes[index];
    try {
        div = iframe.contentDocument.getElementById("minigamesContainer");
        if (div) {
            div.style.display = "none";
            break;
        }
    }
    catch (e) {
    }
}

ссылки:


в допустимом HTML вы можете иметь только элемент с определенным идентификатором. Итак:

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

но если вам все еще нужно повторить все div и проверить их ID, то это должно работать:

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