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

jQuery Discussion :

Accès à mes éléments DOM [AJAX]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur étude et développement logiciel
    Inscrit en
    Novembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur étude et développement logiciel

    Informations forums :
    Inscription : Novembre 2011
    Messages : 27
    Par défaut Accès à mes éléments DOM
    Bonsoir Madame/Monsieur;

    j ai créer trois élements avec dom dans ma fonction jquery et tout ça marche bien. Mais j ai un probleme lorsque j essaye d' acceder à un element, il le voit pas c est à dire rien ne se passe c est comme si l' element n' existait pas. voir le code ci dessous (voir les parties colorées):
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    $(function(){
    	//gestion de la liste deroulante
    	$('#selection').click(function(){
    		if($(selection).val() == "profils"){
    		        //$('#zone_affichage').load("profils.php");
                            //document creer avec dom
    			//recuperer l' id du div où doit etre ajouté le contenu
    			var doc = document.getElementById("zone_affichage");
    			//vider d' abord le div avant de rajouter les elements
    			doc.innerHTML = "";
    			//doc.open();
    			//creation du document
    			//var bt1 = new Array();
    			bt1 = document.createElement("button");
    			bt1.setAttribute("id", "info");
    			var texte1 = document.createTextNode("Information");
    			bt1.appendChild(texte1);
    			//var bt2 = new Array();
    			bt2 = document.createElement("button");
    			bt2.id= "tofs";
    			var texte2 = document.createTextNode("Photos");
    			bt2.appendChild(texte2);
    			//var bt3 = new Array();
    			bt3 = document.createElement("button");
    			bt3.id= "amis";
    			var texte3 = document.createTextNode("Amis");
    			bt3.appendChild(texte3);
    			//ajouter les elements dans l' arborescence
    			doc.appendChild(bt1);
    			doc.appendChild(bt2);
    			doc.appendChild(bt3);
    		}
    		else if($(selection).val() == "supprimer"){
    			//rediriger l' utilisateur sur la page supprimer
    			document.location.href="supprimer.php";
    	    	}
    	});  
            //verifier que notre div 'zone_affichage1' n est pas vide
            /*if($.trim($('#zone_affichage').text()) == ""){
    		var a = $('button').attr('id');
    		alert("blabla");
    		//on recupere le bouton sur lequel on a cliquer
    		$('#info').click(function(){
    			alert('merci info');
    		});
    	}*/
    	//acces au bouton "Information" via son id
    	$('#info').click( function(){
    		alert('cool');
    	}
    );
    });
    Code html : 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
    <header>
    	<div id="parame">
    		<input type="search"/>
    		<select id="selection">
    			<optgroup label="Selectionner une option">
    			<option value="profils">Profils</option>
    			<option value="supprimer">Supprimer</option>
    			</optgroup>
    		</select>
    	</div>
    </header>
    <nav
    	<!-- elements de navigations -->
    	<!-- affiche la liste des amis -->
    	<div id="amis">
    		<button class="link">Liste amis</input><br/>
    	</div>
    	<!-- affiche les commentaires -->
    	<div class="commentaire">
    		<button class="link">Commentaires</input>
    	</div>
    	<!-- affiche les messages -->
    	<div class="message">
    		<button class="link">Messages</input><br/>
    	</div> 
    </nav>
    <section>
    	<div id="zone_affichage"></div>
    	<div id="zone_affichage1"></div>
    </section>

  2. #2
    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
    Billets dans le blog
    20
    Par défaut
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <button class="link">Liste amis</input>
    Avec des codes HTML comme ça, inutile de se demander pourquoi jQuery a du mal à s'y retrouver.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur étude et développement logiciel
    Inscrit en
    Novembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur étude et développement logiciel

    Informations forums :
    Inscription : Novembre 2011
    Messages : 27
    Par défaut jquery
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <button class="link">Liste amis</input>
    avec ce code je peux bien acceder aux elements sans souci. le probleme reside dans mon element créer à partir du dom
    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
    var doc = document.getElementById("zone_affichage");
    //vider d' abord le div avant de rajouter les elements
    doc.innerHTML = "";
    //doc.open();
    //creation du document
    //var bt1 = new Array();
    bt1 = document.createElement("button");
    bt1.setAttribute("id", "info");
    var texte1 = document.createTextNode("Information");
    bt1.appendChild(texte1);
    //var bt2 = new Array();
    bt2 = document.createElement("button");
    bt2.id= "tofs";
    var texte2 = document.createTextNode("Photos");
    bt2.appendChild(texte2);
    //var bt3 = new Array();
    bt3 = document.createElement("button");
    bt3.id= "amis";
    var texte3 = document.createTextNode("Amis");
    bt3.appendChild(texte3);
    //ajouter les elements dans l' arborescence
    doc.appendChild(bt1);
    doc.appendChild(bt2);
    doc.appendChild(bt3);

    quand je fais le bout de code ci-dessous, rien ne se passe, on dirai qu' il ne voit pas l' id="info"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //acces au bouton "Information" via son id
    $('#info').click( function(){
    	alert('cool');
    }
    merci pour votre reponse.

  4. #4
    Membre chevronné Avatar de freddou17
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 341
    Par défaut
    Ce que Bovino veut dire c'est que ton code est faux tout simplement

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <button class="link">Liste amis</input>
    et du coup il faudrait corriger les erreurs de syntaxe avant de chercher un autre problème

    C'est pas parce que la récupération d'un élement marche bien qu'il faut en conclure que la structure DOM est bonne.

    Bon courage ++

  5. #5
    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
    Billets dans le blog
    20
    Par défaut


    Si tu ouvres une balise <button>, tu ne peux pas la fermer avec </input>, ça n'a aucun sens et perturbe JavaScript lorsqu'il parse le DOM.
    Alors ce n'est peut-être pas la cause directe de ton problème, mais c'est à corriger quand même.

    Pour ce qui est de ton problème, c'est juste une question de chronologie.
    Tu crées deux gestionnaires d'événement.
    Le premier va créer des éléments lorsque tu vas cliquer sur $('#selection') et le second affiche une alerte lorsque tu cliques sur $('#info').
    Sauf que quand tu déclares ton second gestionnaire, l'élément en question n'existe pas ! C'est comme si tu demandais à ta femme de t'apporter ton apéro alors que t'es pas marié... tu risques d'attendre longtemps et quand tu te marieras, c'est pas pour autant que ta femme t'apportera ton apéro puisqu'elle n'existait pas quand tu l'as demandé.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur étude et développement logiciel
    Inscrit en
    Novembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur étude et développement logiciel

    Informations forums :
    Inscription : Novembre 2011
    Messages : 27
    Par défaut jquery
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <button class="link">Liste amis</button><br/>
    code corriger.

    voilà je reexplique:
    lorsque je clique sur l' option profils de ma liste deroulante (
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <select id="selection">
    	<optgroup label="Selectionner une option">
    	<option value="profils">Profils</option>
    	<option value="supprimer">Supprimer</option>
    	</optgroup>
    </select>
    ),
    j' ai cette partie de dom qui est rajouter dans ma page:
    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
    bt1 = document.createElement("button");
    bt1.setAttribute("id", "info");
    var texte1 = document.createTextNode("Information");
    bt1.appendChild(texte1);
    //var bt2 = new Array();
    bt2 = document.createElement("button");
    bt2.id= "tofs";
    var texte2 = document.createTextNode("Photos");
    bt2.appendChild(texte2);
    //var bt3 = new Array();
    bt3 = document.createElement("button");
    bt3.id= "amis";
    var texte3 = document.createTextNode("Amis");
    bt3.appendChild(texte3);
    //ajouter les elements dans l' arborescence
    doc.appendChild(bt1);
    doc.appendChild(bt2);
    doc.appendChild(bt3);
    donc vous etes d' accord avec moi que les boutons (Information, Photos et Amis) sont rajoutés dans ma page (voir image jointe), quand je clique sur le bouton "information" mon bout de code ci dessous ne s' execute pas (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $('#info').click( function(){
    	alert('cool');
    });
    )
    et pourtant les elements créer existe dans la page.Nom : page.jpg
Affichages : 150
Taille : 20,6 Ko

  7. #7
    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
    Billets dans le blog
    20
    Par défaut
    Certes, les boutons existent lorsque tu cliques dessus (sinon, il y aurait un gros problème : comment arriverais-tu à cliquer sur des boutons qui n'existent pas ) sauf que lorsque tu déclares le gestionnaire d'événement indiquant que lorsqu'on clique dessus, il faut afficher une alerte, les éléments n'existent pas encore ! Donc ton gestionnaire ne s'applique à rien.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur étude et développement logiciel
    Inscrit en
    Novembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur étude et développement logiciel

    Informations forums :
    Inscription : Novembre 2011
    Messages : 27
    Par défaut jquery
    t a vu la pièce jointe. alors comment tu peux me dire que les elements n' existent pas encore et ils sont affichés dans la page. donc en cliquant sur le bouton <<Information>> il devrait m' afficher l' alerte. sauf c est pas le cas. Si vous avez une solution à me proposer ca serait la bienvenue.

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

Discussions similaires

  1. Accès aux éléments du DOM chargés dynamiquement
    Par baldeadama dans le forum jQuery
    Réponses: 1
    Dernier message: 27/09/2014, 15h26
  2. [DOM] DOM : accès à un élément
    Par PKO06 dans le forum Général JavaScript
    Réponses: 24
    Dernier message: 11/06/2008, 17h44
  3. [Rico] Accès aux éléments de la page de manière bizarre
    Par dodik dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 22/02/2006, 17h35
  4. Autoriser l'acces à "Mes Documents"
    Par cach dans le forum Sécurité
    Réponses: 5
    Dernier message: 16/01/2006, 10h37
  5. Réponses: 1
    Dernier message: 13/07/2005, 15h51

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