Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    579

    Controllare se l'oggetto esiste o non è nullo

    Ho il seguente script:
    codice:
    sfHover = function() {
    
    	var sfEls = document.getElementById("nav").getElementsByTagName("LI");
    	for (var i=0; i<sfEls.length; i++) {
    		sfEls[i].onmouseover=function() {
    			this.className+=" sfhover";
    		}
    		sfEls[i].onmouseout=function() {
    			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
    		}
    	}
    	
    }
    if (window.attachEvent) window.attachEvent("onload", sfHover);
    che richiamo in ogni pagina.
    Succede però che in alune pagine non sia presente l'elemento da lui richiesto e che mi dia l'errore:

    "document.getElementByld(...) è nullo o non è un oggetto"

    Come posso fare per effettuare un controllo per verificare che l'elemento ci sia e, nel caso manchi, di saltare lo script?

    Ho provato con

    codice:
    if (document.getElementById("nav").getElementsByTagName("LI")!==null)
    ma non ha dato nessun esito...

  2. #2
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087

    Re: Controllare se l'oggetto esiste o non è nullo

    if (document.getElementById("nav").getElementsByTagNa me("LI")!==null)

    ma non ha dato nessun esito...
    per me dovrebbe essere

    if(!document.getElementById("nav").getElementsByTa gName("LI") return(false))

  3. #3
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    occhio che come ha scritto pragma se manca nav
    hai che "document.getElementById("nav") has no properties"

    se puo' mancare nav testa con
    if(document.getElementById('nav'))

    se possono mancare gli[*] con
    if(document.getElementById('nav').getElementsByTag Name('LI').length>0)

    ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    579
    Non ho ben capito...
    Ho modificato così seguendo l'esempio di pragma, ma se visualizzo lo script in modo che debba funzionare (quindi con i nav e i li) mi dice che è previsto un oggetto:

    codice:
    sfHover = function() {
    if(!document.getElementById("nav").getElementsByTagName("LI") return(false)) {
    	var sfEls = document.getElementById("nav").getElementsByTagName("LI");
    	for (var i=0; i<sfEls.length; i++) {
    		sfEls[i].onmouseover=function() {
    			this.className+=" sfhover";
    		}
    		sfEls[i].onmouseout=function() {
    			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
    		}
    	}
    	}
    }
    if (window.attachEvent) window.attachEvent("onload", sfHover);
    Sbaglio quindi qualcosa...

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da dabbia
    Non ho ben capito...
    ...

    sostituisci
    codice:
    if(!document.getElementById("nav").getElementsByTagName("LI") return(false)) {
    con
    codice:
    if(document.getElementById('nav')){
    oppure con
    codice:
    if(document.getElementById('nav').getElementsByTagName('LI').length>0){
    nel caso in cui l' elemento con id="nav" sia cmq presente ma tu non voglia far eseguire quelle istruzioni in assenza di tag[*] nell' elemento con id="nav"

    claro?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    579
    Perfetto: funziona con

    if(document.getElementById('nav')){



    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.