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 :

existence d'un élément


Sujet :

JavaScript

  1. #1
    Membre confirmé Avatar de dor_boucle
    Inscrit en
    Juin 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 147
    Par défaut existence d'un élément
    je suis à la recherche d'une méthode ou d'un truc me permettant de tester l'existence d'un élément dans ma page.
    j'ai un script qui s'éxcécute partout sur mes pages, mais certaines ne possèdent pas un élément, ce qui a la facheuse manie de mettre un message d'erreur très laid...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('mon_element').disabled=true;
    comment tester l'existence de "mon_element" ?
    merci d'avance et bonne journée.

  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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    le plus simplement du monde ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(document.getElementById('mon_element')){document.getElementById('mon_element').disabled=true;}
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre confirmé Avatar de dor_boucle
    Inscrit en
    Juin 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 147
    Par défaut
    ahem...
    en fait ca ne corrige pas mon problème, que je viens de mieux isoler je crois...
    alors j'utilise un truc que je sais pas trop ce que c'est.
    voici le code :
    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
    18
    19
    20
    21
    22
    23
    var myrules = {
       // Simulation checkbox event handler
      '#simul': function(el){
    		el.onclick = function(){
    			if (el.checked==true) { // It's a simulation
    				document.getElementById('SimulationReference').disabled=false;
    				document.getElementsByName('LimitationDescription')[0].disabled=true;
    				document.getElementsByName('LifeLimit')[0].disabled=true;
    				document.getElementsByName('LifeLimitUnit')[0].disabled=true;
    			}
    			else {
    				//if (document.getElementById('SimulationReference').disabled)
    					document.getElementById('SimulationReference').disabled=true;
    			  document.getElementsByName('LimitationDescription')[0].disabled=false;
    			  document.getElementsByName('LifeLimit')[0].disabled=false;
    			  document.getElementsByName('LifeLimitUnit')[0].disabled=false;
                }
    		}
    	}
     
    /* , '#autreID' : function(xx){ ... } */
    };
    Behaviour.register(myrules);
    et l'element simul n'existe pas..... et je sais pas comment tester son existence...

  4. #4
    Membre confirmé Avatar de dor_boucle
    Inscrit en
    Juin 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 147
    Par défaut
    j'ai trouvé, punaise j'ai tout testé...

    dans mon fichier où est declaré le register je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    register : function(sheet){
    		if (document.simul){
    et pas document.getElement By Id etc etc...
    ouf !
    bonne journée !

  5. #5
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    Bonjour,

    Désolé de relancer ce sujet six mois plus tard, mais j'ai effectué une recherche et c'est le seul qui se rapporte à ma question.
    Moi aussi je cherche à tester l'existence d'un élément dans mon document.

    Malheureusement le if document.getElementById(mon_element) ne fonctionne pas.
    Et la méthode de dor_boucle n'est pas très clair...

    Pourriez-vous m'en dire un peu plus ?

    Merci.

  6. #6
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    bien sûr que ça marche!

    seulement, exécute le code de spacefrog à la fin du chargement;

  7. #7
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    Oui mais mon probème est un peu plus complexe que faire un simple disabled = true

    En réalité je parcours tous mes éléments <IMG> de mon tableau et lorsqu'un d'eux se trouve sur la 1ere ligne ou la derniere ligne du tableau, je change de src pour l'image...
    Le souci est que l'utilisateur peut supprimer des lignes du tableau : du coup, les éléments supprimés du tableau n'existe plus...

    Lorsque je mets le test if document.getElementById(mon_element), ma boucle sur les lignes du tableau s'arrête.
    Par conséquent, les dernières lignes ne sont pas traitées.

  8. #8
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    évidemment qu'elle s'arrête!

    tu lances ta boucle sur une condition: si la condition est fausse, la boucle ne démarrera pas;

    bref, il nous faut du code ou une adresse;

  9. #9
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    function remodeler() {
    	var table = document.getElementById('tableau');
    	var tbody = table.tBodies[1];
    	var imgUp = "../../images/ord_up.gif";
    	var imgDown = "../../images/ord_down.gif";
    	var imgUpDisab = "../../images/ord_up_disab.gif";
    	var imgDownDisab = "../../images/ord_down_disab.gif";
    	hrefAttribute = document.createAttribute("href");
    	for (i=1;i<tbody.rows.length;i++) {		
    		var lienUpId = 'aup' + i;
    		var lienDownId = 'adown' + i;
    		var arrowUpId = 'swup' + i;
    		var arrowDownId = 'swdown' + i;
    		if (document.getElementById(i)) {
    			if (document.getElementById(i).rowIndex == 1) {
    				document.getElementById(arrowUpId).src = imgUpDisab;
    				document.getElementById(arrowDownId).src = imgDown;
    				document.getElementById(lienUpId).disabled = true;
    				document.getElementById(lienDownId).disabled = false;			
    			} else if (document.getElementById(i).rowIndex==tbody.rows.length) {	
    				document.getElementById(arrowUpId).src = imgUp;
    				document.getElementById(arrowDownId).src = imgDownDisab;
    				document.getElementById(lienDownId).disabled = true;
    				document.getElementById(lienUpId).disabled = false;		
    			} else {
    				document.getElementById(arrowUpId).src = imgUp;
    				document.getElementById(arrowDownId).src = imgDown;
    				document.getElementById(lienUpId).disabled = false;
    				document.getElementById(lienDownId).disabled = false;
    			}
    		}
    		
    	}
    }

  10. #10
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    Je précise que mon getElementById(i) fait bien référence à la ligne de mon tableau (<TR id=2>...</TR>).

  11. #11
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		if (document.getElementById(""+i+"")) {
    ?
    Et si tu mettrais l2 comme id ?

  12. #12
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    Citation Envoyé par javatwister
    évidemment qu'elle s'arrête!

    tu lances ta boucle sur une condition: si la condition est fausse, la boucle ne démarrera pas;
    Je ne vois pas en quoi une condition fausse dans une boucle stopperait la boucle ...

  13. #13
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    Citation Envoyé par FremyCompany
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		if (document.getElementById(""+i+"")) {
    ?
    Et si tu mettrais l2 comme id ?
    Que je mette l2 ou 2, la boucle s'arrete lorsqu'il ne trouve pas l'élement
    Vous etes sûr que le test if (document.getElementById(...)) permet bien de savoir si l'élément existe ?

  14. #14
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    un peu de html aussi, ste plaît?

    en tout cas, ton code est bavard et pesant!

    mais ok pour le coup de la boucle, dans ce sens-là, ça marche

  15. #15
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    Citation Envoyé par javatwister
    un peu de html aussi, ste plaît?
    en gros :

    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
    18
    19
    20
    21
    22
    23
    24
    <TBODY><tr id='1' >
      <TD class=left style="TEXT-ALIGN: center">1</TD>
      <TD>Maison</TD>
      <TD class=upper style="FONT-SIZE:11pt" colspan=2></TD>
      <TD class=upper>OUEST</TD>
      <TD id='par0'>&nbsp;</TD>
      <TD>&nbsp;</TD>
    </TR>
    <tr id='2' >
      <TD class=left style="TEXT-ALIGN: center">2</TD>
      <TD>Hotel</TD>
      <TD class=upper style="FONT-SIZE:11pt" colspan=2></TD>
      <TD class=upper>OUEST</TD>
      <TD id='par0'>&nbsp;</TD>
      <TD>&nbsp;</TD>
    </TR>
    <tr id='3' >
      <TD class=left style="TEXT-ALIGN: center">3</TD>
      <TD>Appart</TD>
      <TD class=upper style="FONT-SIZE:11pt" colspan=2></TD>
      <TD class=upper>OUEST</TD>
      <TD id='par0'>&nbsp;</TD>
      <TD>&nbsp;</TD>
    </TR></TBODY>
    Sachant que l'utilisateur peut, par exemple supprimer la seconde ligne (<TR id='2'>)
    Du coup, ne reste plus en jeu que 2 lignes (<TR id='1'> et <TR id='3'>), et c'est pour cela que je souhaite tester l'existence de l'élément puisque j'effectue un parcours avec une boucle for (de 1 à nombre de lignes) ...

    Citation Envoyé par javatwister
    en tout cas, ton code est bavard et pesant!
    C'est-à-dire ?
    Possibilité d'optimiser à ton avis ?

    Citation Envoyé par javatwister
    mais ok pour le coup de la boucle, dans ce sens-là, ça marche
    Je me disais bien ...

  16. #16
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    tu as vraiment plusieurs tbodies dans ton tableau? (c'est con mais je demande)

  17. #17
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    Citation Envoyé par javatwister
    tu as vraiment plusieurs tbodies dans ton tableau? (c'est con mais je demande)

    Non pourquoi dis-tu cela ?

  18. #18
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    parce que tu fais référence à

  19. #19
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    Oui bah deux quoi en fait.
    C'est pour pouvoir travailler sur la collection rows...

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

Discussions similaires

  1. [DOM] vérifier l'existence d'un élément
    Par typikal dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/03/2008, 16h18
  2. Existence d'un élément dans une map
    Par magicpm7 dans le forum SL & STL
    Réponses: 6
    Dernier message: 20/08/2007, 17h37
  3. Tester l'existance d'un élément d'un tableau
    Par licorne dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 21/06/2007, 17h04
  4. Test de l'existence d'un élément dans un set
    Par Rodrigue dans le forum C++
    Réponses: 16
    Dernier message: 28/10/2006, 01h36
  5. Réponses: 2
    Dernier message: 22/09/2006, 13h57

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