IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Tester si une propriété existe


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 43
    Points : 40
    Points
    40
    Par défaut Tester si une propriété existe
    Bonjour,

    J'ai voulu écrire une fonction qui recherche la balise "br" (ou "p"...) suivant l'objet courant. [Le code ci-dessous a le comportement attendu].

    Voici ce que j'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    function RechercheSuivantTag(obj, strTag) {
    	strTag=' '+strTag.toLowerCase()+' ' ;
    	do
    	{
    		try{
    			objTag=' '+obj.tagName.toLowerCase()+' ' ;
    		}
    		catch(err){
    			objTag=' undefined ' ;
    		}
    		test=(strTag.indexOf(objTag)==-1 && obj.nextSibling !=null) ;
    		if(test) obj=obj.nextSibling ;
    	}
    	while(test) ;
    	return obj ;
    }
    Certains nœuds ne possèdent pas la propriété tagName.

    Je trouve que la solution try... catch n'est pas élégante, votre avis ?

    A-t-on une autre solution pour tester si la propriété tagName est définie plutôt que de provoquer une erreur ?

    Pierre

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    hasOwnProperty ?

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 43
    Points : 40
    Points
    40
    Par défaut
    Bonjour Bovino,

    J'avais testé cette écriture, mais sans réussite...
    Pourtant après un nouveau test, cela semble ok...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function RechercheSuivantTag(obj, strTag) {
    	strTag=' '+strTag.toLowerCase()+' ' ;
    	do
    	{
    		objTag=obj.tagName?' '+obj.tagName.toLowerCase()+' ':' undefined ' ;
    		test=(strTag.indexOf(objTag)==-1 && obj.nextSibling !=null) ;
    		if(test) obj=obj.nextSibling ;
    	}
    	while(test) ;
    	return obj ;
    }
    --
    Bonjour SpaceFrog,

    Je ne connaissais pas... Merci.
    Ma fonction devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    function RechercheSuivantTag(obj, strTag) {
    	strTag=' '+strTag.toLowerCase()+' ' ;
    	do
    	{
    		if (obj.hasOwnProperty('tagName')){
    			objTag=' '+obj.tagName.toLowerCase()+' ' ;
    		}
    		else{
    			objTag=' undefined ' ;
    		}
    		test=(strTag.indexOf(objTag)==-1 && obj.nextSibling !=null) ;
    		if(test) obj=obj.nextSibling ;
    	}
    	while(test) ;
    	return obj ;
    }
    ---

    Quelle est la bonne pratique ?
    Avez-vous une préférence ?

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    pour moi la seconde est plus "fluide" puisque ne créant pas d'erreur ni d'exception

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tester si une données existe deja
    Par mael94420 dans le forum ASP
    Réponses: 1
    Dernier message: 18/10/2005, 17h09
  2. Tester qu'une valeur existe dans une "liste"
    Par Oluha dans le forum Langage
    Réponses: 12
    Dernier message: 04/08/2005, 23h01
  3. Réponses: 2
    Dernier message: 20/05/2005, 10h18
  4. MDI => Tester si une fenêtre existe déjà ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 4
    Dernier message: 17/04/2005, 21h41
  5. Tester qu'une date existe
    Par Oluha dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/03/2005, 10h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo