Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 2012
-
13 mars 2008 à 17:28
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 2012
-
14 mars 2008 à 11:54
Bonzourrrrr
Je fais une petite application pour un jeu en php/mysql/js/.... et j'ai besoin d'un petit coup de pouce pour le DOM
J'ai vogué sur les flots du net pour trouver réponse à ma question mais ai trouvé seulement des éléments.
Alors voyons !
j'ai un tag "ul" dans lequel j'ai 3 "li" ce qui donne ceci
-l'id d'un element li par exemple 12
-l'id de l'ul père ici ul_1
Et maintenant la question qui fache
Comment puis je savoir la position du li au sein de son pere via les informations que j'ai ?
Ici cette position est egale a 1 mais comment le faire via le DOM ?
Me faut il d'autres informations pour trouver sa position?
Merci d'avance
Il vaut mieux poser une question et passer pour bête que le rester toute sa vie
Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
XtremDuke
Messages postés626Date d'inscriptionsamedi 28 septembre 2002StatutMembreDernière intervention18 mai 20094 13 mars 2008 à 17:57
Y'a peutetre plus simple mais je suis trop fatigué pour réflechir...
Voilà une proposition :
function getPosition(id_li){
var lstLI = document.getElementById('id_de_mon_ul').getElementsByTagName('li');
for(var i=0; i<lstLI.length; i++) if(lstLI[i].id == 'id_li') return i;
return -1;
}
Remplace 'id_de_mon_ul' par l'identifiant de ton tag UL.
Ensuite tu peus utiliser cette fonction qui va te renvoyer la position de ton LI dans ton UL ou -1 s'il n'existe pas.
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 13 mars 2008 à 19:50
Bonjour,
<table bgcolor= "#e6effe" border="0" cellpadding="5" cellspacing="0" width="100%">----, ...sans avoir à boucler les fils du père pour retrouver le bon... </td>
</td></tr></tbody></table>possible mais uniquement avec IE et OPERA en utilisant la propriété sourceIndex , sinon la ou les boucles sont inéluctables.
je
te livres au passage une fonction que j'avias écrite il y a quelque
temps, une autre approche, avec bien plus de lignes de code
//---------------------------------- function Get_Index( parent_, child_){
var O_parent = document.getElementById( parent_);
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 13 mars 2008 à 18:08
je voulais justement eviter cette boucle qui me semblait inutile...
En fait je croyais que si on a l'id du père et l'id du fils on aurait pu retrouver directement la position du fils dans son père sans avoir à boucler les fils du père pour retrouver le bon.
Je vais faire comme tu dis mais je restes persuadé qu'il y a une solution plus "optimisée"
Merci en tout cas
Il vaut mieux poser une question et passer pour bête que le rester toute sa vie
Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
Vous n’avez pas trouvé la réponse que vous recherchez ?
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 14 mars 2008 à 11:54
Merci beaucoup pour l'info
Mais aussi pour la fonction !
Je vais quand même la retailler un peu histoire de ne laisser apparaitre qu'un seul return et d'apporter ma pierre à l'edifice
function Get_Index( sIdParent, sIdChild){
var oParent = document.getElementById(sIdParent);
var oChild = document.getElementById(sIdChild);
var iChilds = oParent.childNodes.length;
var mReturn=-1;
//-- IE, OPERA exclusif
if(oParent.sourceIndex){
mReturn=oChild.sourceIndex -oParent.sourceIndex -1;
}
else {
//-- Les autres
var iChildCurrent;
var iNodePosition=0;
for(iChildCurrent=0;iChildCurrent<iChilds; iChildCurrent++){
if( oParent.childNodes[iChildCurrent].nodeType == 1){
if(oParent.childNodes[iChildCurrent] == oChild){
mReturn=iNodePosition;
iChildCurrent=iChilds; //on sort de la boucle proprement
}
iNodePosition++;
}
}
}
return mReturn;
}
Je ne peux tester pour le moment vu que je suis débordé
Bonne Continuation et Merci
Il vaut mieux poser une question et passer pour bête que le rester toute sa vie
Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro