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 :

Vérifier si un élément existe grâce à son id


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Par défaut Vérifier si un élément existe grâce à son id
    Dans ma page, je crée des champ du genre, à partir d'éléments récupérés dans une base de données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="hidden" id="monId" value="maValeur" />
    Dans le script, je parcours l'ensemble de ces éléments afin de les traiter, mais d'abord je dois vérifier qu'ils existent bel et bien. J'ai donc essayé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var test = document.getElementById("monId");
    if(test!=null){
           //je fais le traitement
    }
    Le traitement marche lorsque l'id existe, par contre dès qu'il tombe sur un id qui n'existe pas, il bloque. C'est bizarre, parce que ça devrait marcher...

    Quelqu'un a une idée?

  2. #2
    Membre expérimenté Avatar de eckerdecker
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 134
    Par défaut
    Bonjour,

    Pour commencer : ta variable testSecteur, est-ce une coquille liée à la simplification de ton code pour l'exemple ? c'est bien la variable test que tu veux tester et savoir si elle vaut null ?

    Si c'est bien le cas c'est effectivement bizarre, je viens de faire le test suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <div id="bloc1">&nbsp;</div>
    <div id="bloc2">&nbsp;</div>
    <div id="bloc3">&nbsp;</div>
    <div id="bloc5">&nbsp;</div>
    <div id="bloc6">&nbsp;</div>
    <div id="bloc8">&nbsp;</div>
    <script type="text/javascript">
    	var test;
    	for(var i = 0 ; i < 9 ; i++) {
    		test = document.getElementById('bloc'+i);
    		if(test != null) alert(i);
    	}
    </script>
    Ma boucle ne s'est pas bloquée, je n'ai pas d'erreur javascript et il m'a bien affiché 1 puis 2, 3, 5, 6 et enfin 8.

    Sur quel navigateur as tu le problème ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Par défaut
    En fait test et testSecteur sont pareils. C'est juste une erreur de frappe.

    Je suis sur IE, et c'est quasiment le même genre de choses que dans ton exemple, mais ça ne marche toujours pas. Je vais revérifier mon code, mais je ne pense pas qu'il y ait une erreur.

  4. #4
    Membre expérimenté Avatar de eckerdecker
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 134
    Par défaut
    J'ai refais mon test en remplaçant les divs par des input (histoire de m'approcher le plus possible de ton cas) et sur IE6, IE7, FF : toujours OK
    Il doit y avoir autre chose.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Par défaut
    J'ai simplifié ma page au maximum, pour qu'il n'y aucune erreur qui s'y soit glissée, et ça donne:
    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
     
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <html>
    	<head>
    	  <title><s:text name="onglet4" /></title>
    	  <link href="<s:url value="Pages/css/styleConnexion.css"/>" rel="stylesheet" type="text/css"/>
    	</head>
    	<script type="text/javascript" djConfig="parseOnLoad:true, isDebug:false" src="Pages/dojo/dojo.js"></script>
     
    	<script type="text/javascript">
     
    	function init(){
    		for(i=1;i<=6;i++){
    			var test = document.getElementById("bloc"+i).value;
    			if (test!=null) alert(i);
    			else alert("vide");
    		}
     
    	}
     
    	dojo.addOnLoad(init);
    	</script>
     
    	 <body class="page">
    			<input type="hidden" id="bloc1"></input>
    			<input type="hidden" id="bloc2"></input>
    			<input type="hidden" id="bloc5"></input>
    	 </body>
    </html>
    Mais les alert s'arrête au bloc2
    Essaye avec mon code stp, pour voir si ça marche chez toi.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Par défaut
    J'ai trouvé !!!

    J'ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var test = document.getElementById("bloc"+i).value;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var test = document.getElementById("bloc"+i);
    et ça marche.

    Maintenant je vais réessayer avec ma vraie page

  7. #7
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Salut,
    juste un détail, mais ça peut aider…
    IE prend des libertés avec les id : il les recense sous forme de variable globale. un exemple pour être plus clair :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="caoutchouc"></div>
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    alert(caoutchouc);
    // affiche "[object HTMLDivElement]"
    Il y a peut-être des interférences…

    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  8. #8
    Membre expérimenté Avatar de eckerdecker
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 134
    Par défaut
    Citation Envoyé par Watilin Voir le message
    Salut,
    juste un détail, mais ça peut aider…
    IE prend des libertés avec les id : il les recense sous forme de variable globale. un exemple pour être plus clair :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="caoutchouc"></div>
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    alert(caoutchouc);
    // affiche "[object HTMLDivElement]"
    Il y a peut-être des interférences…

    Ça j'ignorais complétement, c'est bon à savoir

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Par défaut
    Au final, ça marche.
    C'est bizarre parce que j'ai juste fait des manip où j'affichais tout plein de trucs à l'écran pour voir ce qui se passait pas à pas, et au final il a débloqué...

    Merci pour votre aide les gars

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

Discussions similaires

  1. Vérifier qu'un élément n'existe pas dans la BDD
    Par choumerv dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 14/03/2014, 14h04
  2. [FAQ] [jQuery] Comment puis-je vérifier si un élément existe ?
    Par SylvainPV dans le forum Contributions JavaScript / AJAX
    Réponses: 2
    Dernier message: 30/12/2013, 16h32
  3. Vérifier si un fichier existe par son extension !
    Par cincap dans le forum Débuter
    Réponses: 10
    Dernier message: 14/11/2011, 13h08
  4. Vérifier si élément existe avant insertion
    Par piero53 dans le forum Langage
    Réponses: 2
    Dernier message: 04/03/2010, 08h54

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