begin process at 2012 05 28 14:37:49
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Navigation

 > RECHERCHE D'ID D'UN ELEMENT PARENT DANS UN DOCUMENT

RECHERCHE D'ID D'UN ELEMENT PARENT DANS UN DOCUMENT


 Information sur la source

Note :
Aucune note
Catégorie :Navigation Niveau :Débutant Date de création :10/10/2008 Vu / téléchargé :4 718 / 102

Auteur : jsgorre

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Une petite fonction recursive permettant de rechercher l'id d'un élément parent sur 1 ou plusieurs niveaux.

Source

  • /*
  • fonction getIdOf
  • objet: permet de récupérer l'id de n'importe quel élément parent
  • args:
  • - tag: Nom de l'élément à récupérer
  • - elt: élément source (this)
  • - niv: niveau du parent à récupérer
  • */
  • function getIdOf(elt,tag,niv){
  • // On initialise le niveau à 1 si besoin est.
  • (niv==undefined || niv<1)?niv=1:niv=niv;
  • // Le document a été parcouru entièrement et aucune balise n'a été trouvée
  • if (elt.parentNode.nodeName=="#document") return null;
  • // Si la balise ne correspond pas on continue la recherche
  • if (elt.parentNode.nodeName!=tag){
  • return getIdOf(elt.parentNode,tag,niv);
  • // Si le nombre de niveaux demandé n'est pas atteint et qu'il reste des balises correspondantes on continue
  • } else if (niv!=1 && elt.parentNode.parentNode.nodeName==tag){
  • return getIdOf(elt.parentNode,tag,niv-=1);
  • // Sinon on renvoie l'id de la balise correspondante
  • } else {
  • return elt.parentNode.id;
  • }
  • }
/*
fonction getIdOf
objet: permet de récupérer l'id de n'importe quel élément parent
args:
    - tag: Nom de l'élément à récupérer
    - elt: élément source (this)
    - niv: niveau du parent à récupérer
*/

    function getIdOf(elt,tag,niv){
                // On initialise le niveau à 1 si besoin est.
        (niv==undefined || niv<1)?niv=1:niv=niv;
        // Le document a été parcouru entièrement et aucune balise n'a été trouvée
        if (elt.parentNode.nodeName=="#document") return null;
        // Si la balise ne correspond pas on continue la recherche          
        if (elt.parentNode.nodeName!=tag){                              
            return getIdOf(elt.parentNode,tag,niv);
        // Si le nombre de niveaux demandé n'est pas atteint et qu'il reste des balises correspondantes on continue
        } else if (niv!=1 && elt.parentNode.parentNode.nodeName==tag){  
            return getIdOf(elt.parentNode,tag,niv-=1);
        // Sinon on renvoie l'id de la balise correspondante
        } else {
            return elt.parentNode.id;
        }
    }


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source avec une capture ANTI-ROBOTS V 1.0 par MacGaliver
Source avec une capture PRÉSENTOIR PAGE/SUJET par tiranus
Source avec Zip Source avec une capture NAVIGATEUR INTERNET HAVRET par HAVRETos
Source avec Zip WMANAGER.JS : GÉRER LES FICHIERS WMA AVEC WINDOWS MEDIA PLAY... par jdmcreator
Source avec Zip Source avec une capture NAVIGATION PAR AJAX, CHARGEMENT DES PAGES SANS RECHARGEMENT par zulrigh

Commentaires et avis

Commentaire de Palleas_44 le 11/10/2008 10:02:06

Personnelement je n'aurais pas utilisé une fonction récursive, mais après c'est libre à l'appreciation de chacun je pense ;)

Commentaire de jsgorre le 12/10/2008 21:38:25

Merci pour ton commentaire.  Par curiosité quelle solution aurait tu choisi ?

Commentaire de Palleas_44 le 12/10/2008 21:43:34

J'ai un peu de mal à faire du js en ce moment, mais un while plutôt qu'une fonction récursive :

function getParentId(child,tag) {
  var parent = child.parentNode;
  while(parent.tagName != tag) parent = parent.parentNode;
  return parent.getAttribute("id");
}

Bon après j'ai pas testé et c'est optimisable, mais dans l'idée voilà =)

Commentaire de jsgorre le 13/10/2008 09:49:56

Effectivement l'ecriture est plus simple dans ce cas. Mais en ajoutant la gestion des niveaux et le parcours complet du document, ça me semble moins clair à mettre en place.
Je trouve que la recursivité apporte plus de clarté au code.
Mais bon ca permet de voir différentes manières de penser. :-)

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,543 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales