Position dans un noeud [Résolu]

Signaler
Messages postés
2
Date d'inscription
mardi 11 juillet 2006
Statut
Membre
Dernière intervention
24 novembre 2006
-
Messages postés
2
Date d'inscription
mardi 11 juillet 2006
Statut
Membre
Dernière intervention
24 novembre 2006
-
bonjour a tous!
je voudrais savoir comment recuperer sur le lien que je clic sa position dans mon noeud si c possible!
voici le html et le script

[# lien 1][# lien 2]

function test(val) {
    var nbr_lien = val.parentNode.childNodes.length;
    var lien_clic = ;//script????
    alert('vous avez cliquer sur le lien numero ' + lien_clic + ' sur les ' + nbr_lien + ' dans la page');   
}

5 réponses

Messages postés
224
Date d'inscription
lundi 19 décembre 2005
Statut
Membre
Dernière intervention
6 juin 2007
2
Salut

Le problème c'est que les noeuds vides sont également comptés... ce que je veux dire par noeuds vide c'est que par exemple si dans ta page html tu appliques une indentation comme ca :

      
      

alors le val.parentNode.childNodes.length sera égal à 5 !!!!!
les retours chariots sont comptés comme noeuds.... c'est idiot mais c'est comme ca

donc tu peux faire ca pour contrer ce problème :

function test(el) {
      var nbr_lien = 0;
      var lien_clic = 0;
      for(var i=0;i<el.parentNode.childNodes.length;i++) {
            if (el.parentNode.childNodes[i].nodeType != 3) {
                  nbr_lien++;
                  if ( el.parentNode.childNodes[i] === el ) lien_clic = nbr_lien;
            }
      }
      alert('vous avez cliquer sur le lien numero ' + lien_clic + ' sur les ' + nbr_lien + ' dans la page');
}

Voilà et maintenant ca marche meme si il y a des noeuds vides... et le '==='  n'est pas une erreur!!! c'est bien 3 égal à la suite

bonne prog

@+  

-- The Rubik's Man --
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
B

onjour...


Bien vu rubiks10

il existe également la méthode avec getElementsByTagName
exemple :
function test(el) {
  var nbr_lien = 0;
  var lien_clic = 0;
  var szTag = el.tagName;
  var O_Tag = el.parentNode. getElementsByTagName ( szTag);
  for( var i =0; i< O_Tag.length; i++){    if( el O_Tag[i]) lien_clic i+1;
  }
   alert('vous avez cliquer sur le lien numero ' + lien_clic + ' sur les ' + O_Tag.length + ' dans la page');
}

Nota:
  === correspond à égal et de même type

;0)
Messages postés
403
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
7 août 2020
1
une solution mais il doit en exister d'autre :

[# lien 1][# lien 2][# lien 3]

<script>
function test(val) {
    var nbr_lien = val.parentNode.childNodes.length;

    var i=0;

    while(val.parentNode.childNodes[i]!=val) // on scanne tous les noeud jusqu'a atteindre celui qui nous interesse
            i++;
   

    var lien_clic = i+1; // on rajoute 1 car les array commence a 0
    alert('vous avez cliquer sur le lien numero ' + lien_clic + ' sur les ' + nbr_lien + ' dans la page');
}
</script>
Messages postés
403
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
7 août 2020
1
Effectivement [auteurdetail.aspx?ID=649381 rubiks10], je ne savais pas que les retours chariots étaient comptabilisé dans les noeuds...

oublions donc ma solution
Messages postés
2
Date d'inscription
mardi 11 juillet 2006
Statut
Membre
Dernière intervention
24 novembre 2006

Merci a vous tous longue vie a codeS SourceS