2012-01-04 13 views
6

Chciałbym napisać skrypt, który wyłącza element div na określonej stronie. Na dowolnym ładunku strony nie wiem, gdzie w DOM div będzie, ale wiem, że to zawsze nazywa <div id = "alertPanel"> ....</div>Jak wyłączyć bloki div mające określony wzorzec identyfikatora?

Jak mam go wyłączyć wyłączenie tego div?

Moi intial myśli były czymś wzdłuż linii:

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'; 
} 

ale jak można powiedzieć utknąłem na dostęp do właściwości id do kontroli równości.

Incidently używam edytora tekstu do pisania to - ja domyślam się, że standard javascript redaktor dałoby lista automatycznego po wpisaniu w myDivs[i].

Odpowiedz

12

Jeśli to ma id, można użyć document.getElementById:

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

Następnie, jeśli istnieje, możesz go usunąć (prawdopodobnie zły pomysł) lub ukryć:

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

Aktualizacja: Re Twój komentarz na inną odpowiedź:

dzięki za odpowiedź. Czy Twoje statystyki odnoszą się również do strony z elementami iframe. Przedmiotowy div jest w iframe. Próbowałem rozwiązania Ypur i niestety nie działa. może link do strony pomogą: tennis.betfair.com div chcę wyłączyć jedną z id: minigamesContainer

Jeśli element jest w iframe, to trzeba zadzwonić getElementById na dokumencie jest to iframe, ponieważ są to osobne okna i oddzielne dokumenty. Jeśli znasz id z iframe, można użyć document.getElementById uzyskać instancję iframe, a następnie użyj contentDocument aby uzyskać dostęp do jego dokumentu, a następnie użyj getElementById na tym uzyskać „minigamesContainer” element:

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

(The try/catch jest tam z powodu potencjalnego błędu bezpieczeństwa dostępu do treści iframe, nie znam Greasemonkey wystarczająco dobrze, aby wiedzieć, czy dotyczy to SOP. Mam tendencję do zakładania, że ​​nie, ale lepiej bezpieczny .. .)

Jeśli nie znasz id z iframe lub jeśli nie masz, możesz po prostu pętli wszystkich z nich zachęcając z document.getElementsByTagName a następnie zapętlenie:

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

Referencje :

+0

Działa to świetnie - dziękuję - ale co jeśli zamiast szukać "alertPanel", ja ** również chciałem ukryć 'alertPanel2' lub' alertPanel3'? (Próbuję nauczyć się podstaw języka javascript - trochę się denerwuję eksperymentowaniem.) –

1

W Valid HTML można mieć tylko element o określonym ID. Więc:

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

Ale jeśli nadal trzeba iteracyjne wszystkie div i sprawdzić swoje identyfikatory, to powinno działać:

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

Należy zauważyć, że element z 'Widoczność: hidden' zajmuje miejsca na ekranie, nawet jeśli nie wykazano natomiast element z' wyświetlacza: none' nie. – kba

Powiązane problemy