2009-07-27 3 views
0

J'ai un gestionnaire d'événements javascript dans un de mes fichiers SSI qui cache un tas d'éléments qui peuvent apparaître ou non sur la page qui appelle le fichier SSI. Par conséquent, le gestionnaire va en douceur jusqu'à ce qu'il ne trouve plus l'élément que je lui demande de masquer, puis s'arrête avant de terminer ce qu'il reste à cacher. Alors, comment puis-je obtenir JavaScript pour ne pas être bloqué sur si l'élément est sur la page et juste passer à travers le gestionnaire?Comment puis-je demander à JavaScript de cacher un élément SEULEMENT SI il peut être trouvé?

Merci beaucoup.
Mike

Répondre

8

dépend de la façon que vous obtenez l'élément. Si vous ne l'utilisez une bibliothèque JS alors vous pourriez faire quelque chose comme ceci:

/* handler begin code */ 
var el = document.getElementById('myElement'); 
if (el) { 
    //do work 
} 
/* handler end code */ 

Il est plus facile si vous utilisez quelque chose comme jQuery, où vous pouvez sélectionner l'élément et même si elle n'existe aucune opération sur l'ensemble ne sera pas jeter une exception

//this will work even if myElement doesn't exist - no exceptions will be thrown 
$("#myElement").hide(); 
1

Une partie du code serait bien de répondre à cette bien, mais qu'en est-ce:

if (element) { 
    element.hide(); 
} 
+0

Ou encore plus succinctement: élément && element.hide(); – HBP

+0

To-may-to, To-mah-à. ;) – deceze

+0

en réalité si l'utilisation de l'élément jQuery ne sera jamais nulle tant qu'une sélection est tentée au préalable. s'il n'y a pas d'élément alors ce sera juste un tableau jQuery vide –

0

dans bon vieux javascript (pas de bibliothèques) vous faites juste cela pour chaque ID que vous voulez masquer sélectionné:

if(document.getElementById("myelementId")) document.getElementById("myelementId").style.display = "none"; 

vous pouvez le mettre dans une boucle aussi si vous avez aimé:

var elementsToHide = ["tom","dick","harry"]; 

for(var i in elementsToHide) { 
    var element = document.getElementById(elementsToHide[i]); 
    if(element) element.style.display = "none"; 
} 
Questions connexes