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 :

[DOM] Sélectionner un élément


Sujet :

JavaScript

  1. #1
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut [DOM] Sélectionner un élément
    Salut,

    J'ai des éléments mis en place de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <p>
        <label id="idLabel" for="idInput">libellé</label>
        <input id="idInput" type="text" onclick="maFonction();" />
        <span id="idSpan">Ceci est une erreur</span>
    </p>
    Ceci est plus ou moins un code généré en asp.net (je n'ai donc pas totalement la main dessus). Dans maFonction() j'ai accès à l'id du span et je souhaiterais en utilisant DOM accéder à l'élément input.

    Ma question est donc : Comment en utilisant le Dom, depuis l'id du span je peux accéder à l'input qui est juste avant sans utiliser l'identifiant de l'input? Juste en jouant avec la hierarchie des éléments dans le document.

    J'essaye de lire la documentation sur le DOM mais c'est chaud, il n'y a jamais d'exemple.

    Merci d'avance.

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parentNode.fisrtChild.nextSibling
    ?

  3. #3
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    J'ai pas encore réussi à utiliser ta porposition. J'ai du mal à écrire du JS utilisant le DOM . Mais l'idéal est plutôt de faire référence au noeud immédiatement précédent en utilisant previousSibling.

    M'enfin je mettrai résolu quand j'aurais trouver comment écrire ma fonction.

    Merci pour la piste.

  4. #4
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    J'ai un problème! étonnant, non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var msgErreur = src.id;
    var noeud = document.getElementById(msgErreur);
    var tb = noeud.previousSibling;
    alert(noeud.tagName +"**"+ tb.tagName);
    me retourne :
    SPAN**undefined
    pourtant le noeud existe!
    Quelqu'un sait ce qui cloche?

    edit : idem avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var tb = noeud.parentNode.firstChild.nextSibling;

  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
    et alert (msgerreur) retourne quoi ???
    a mon avis le problème vient de là ..

  6. #6
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Non désolé, ça me retourne bien l'id du span. Et j'ai pas plus d'info à donner

  7. #7
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    949
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 949
    Points : 730
    Points
    730
    Par défaut
    j'avait le meme pb, car FF rajoute des node "text" un peu partotu, voila ma soluition, afin de trouver un span :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    			while ( id.nodeName != "SPAN" ) {
    				id = id.previousSibling
    			}

  8. #8
    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
    utilise plutot un nodeCleaner ...

  9. #9
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    J'ai rien compris à vos deux derniers messages!

  10. #10
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    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 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parentNode.getElementsByTagName("input")[0];

  11. #11
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    949
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 949
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par SpaceFrog
    utilise plutot un nodeCleaner ...
    celui fournit sur le tuto AJAX, pour du XML fonctionnerat il?
    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
    function go(c){
        if(!c.data.replace(/\s/g,''))
        c.parentNode.removeChild(c);
    }
    function cleanXML(d){
        var bal=d.getElementsByTagName('*');
        for(i=0;i<bal.length;i++){
    	a=bal[i].previousSibling;
    	if(a && a.nodeType==3)
    	    go(a);
    	b=bal[i].nextSibling;
    	if(b && b.nodeType==3)
    	    go(b);
        }
        return d;
    }
    si oui, franculo_caoulene, tu passe ton node en parametre et tu recupere un node netoyé des champs parasites, mias je susi pas sur que celui ci marche... il est fait pour du XML, pas pour des objet DOM... donc attend la reponse de la grenouille de l'espace )

  12. #12
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    C'est bien le coup du texte en effet. Après l'input de mon exemple j'ai
    € TTC
    Mais pas tout le temps, ça m'arrange pas pour faire un truc générique
    Je vais voir, merci à vous.

  13. #13
    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
    pas besoin de passer par ajax...
    jusqte la focntion nodeCleancer dans le head et tu la lances sur le body onload ...
    ça nettoie tous les nodes inutiles

  14. #14
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    949
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 949
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par SpaceFrog
    pas besoin de passer par ajax...
    jusqte la focntion nodeCleancer dans le head et tu la lances sur le body onload ...
    ça nettoie tous les nodes inutiles
    c'est une focntion integrée a JS?

  15. #15
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Je me suis fourvoyé, j'ai oublié que je voulais utiliser différentes mises en forme, comme par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <p>
        <label id="idLabelQte" for="idInputQte">libellé qte</label>
        <input id="idInputQte" type="text" onclick="maFonctionInt();" />
        <label id="idLabelMonnaie" for="idInputMonnaie">libellé monnaie</label>
        <input id="idInputMonnaie" type="text" onclick="maFonctionMonnaie();" />
        <span id="idSpanQte">Ceci est une erreur</span>
        <span id="idSpanMonnaie">Ceci est une erreur</span>
    </p>
    Donc utiliser la hierarchie est une mauvaise idée. Je vais devoir imposer une nomanclature et jouer avec les id.

    Ce fut très très intéressant tout de même, j'ai appris aujourd'hui

    Merci.

  16. #16
    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
    ben non hansa elle n'est pas intégrée, puisque c'est celle qyue tu as trouvé ...
    tu la colle dans le head et tu fait juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload="cleanXML(document.body)" >

Discussions similaires

  1. [MySQL] sélectionner un élément d'un SELECT
    Par oceane751 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 12/04/2006, 01h22
  2. Sélectionner un élément dans une liste multiple
    Par sourivore dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 28/03/2006, 11h47
  3. [TTreeview] Comment sélectionner un élément de l'arbre ?
    Par altahir007 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/04/2005, 13h44
  4. Réponses: 2
    Dernier message: 10/05/2004, 11h20
  5. Pré-sélectionner un élément d'une combobox
    Par delphim dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/06/2003, 15h26

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