Как отключить блоки 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
С iframe
s являются отдельными окнами и имеют отдельные документы. Если вы знаете 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';