Téléchargé 3 fois
Vote des utilisateurs
0
0
Détails
Licence : Non renseignée
Mise en ligne le 4 octobre 2011
Plate-formes :
Linux, Mac, Windows
Langue : Français
Référencé dans
Navigation
Comment retrouver les coordonnées X et Y d'un objet ?
Comment retrouver les coordonnées X et Y d'un objet ?
La fonction calculeOffsetLeft retourne le nombre de pixel à la gauche de l’élément (son abscisse), la fonction calculeOffsetTop le nombre au dessus (son ordonnée).
Bonjour Patrick !!!!
Encore faut-il qu'il tourne !
quand on propose une source il est quand même important de l'avoir testée avant.
Qu'aurais tu vu ?, ... que rien ne fonctionne
• Ta fonction calcule() :
tu passes en paramètre r à ta fonction calculeOffset alors que cette variable n'est définie nulle part.
• Ta fonction calculeOffset(element) :
que vaut ta variable element à la fin de ta boucle while ... null, donc quand tu écris plus bas element.offsetWidth cela plantera .
Dans ce cas pourquoi ne pas utiliser directement getBoundingClientRect(), pense à respecter la casse, la source de denisC permet de récupérer la position par rapport au document et non par rapport au premier parent positionné.
je part du principe que moins le moulin tourne mieux c'est
a tester bien sur
Qu'aurais tu vu ?, ... que rien ne fonctionne
• Ta fonction calcule() :
Code : | Sélectionner tout |
1 2 3 4 5 | function calcule() { var position = calculeOffset(r); console.log(position.Left); console.log(position.Top); } |
• Ta fonction calculeOffset(element) :
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function calculeOffset(element) { var oLeft = 0; var oTop = 0; while (element) { oLeft += element.offsetLeft; oTop += element.offsetTop; element = element.offsetParent; } return { "left": oLeft, "Top": oTop, "Right": oLeft += element.offsetWidth, "Bottom": oTop += element.offsetHeight }; } |
elle devrait de donner l'equivalent de getboundingclientrect en un seul tour
re Bonjour Nosmoking
oui c'est vrai chez moi rest une variable globale representant un div
sinon
la fonction de denisC remonte aussi jusqu'au document non ??, tant que element existe(element qui devient le parent a chaque tour de boucle )
de meme que getboundingClientRect non?
j'ai ajouté le top/bottom mais le but etait d'avoir le top/left en un seul coup et du coup maintenant on a les 4 valeurs
on est bon comme ca ?
oui c'est vrai chez moi rest une variable globale representant un div
sinon
Code javascript : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | function calcule() { var r = document.getElementById("toto"); var position = calculeOffset(r); console.log(position.Left); console.log(position.Top); } //pour la fonction function calculeOffset(element) { var memo = element; var oLeft = 0; var oTop = 0; while (element) { oLeft += element.offsetLeft; oTop += element.offsetTop; element = element.offsetParent; } return { "left": oLeft, "Top": oTop, "Right": oLeft += memo.offsetWidth, "Bottom": oTop += memo.offsetHeight }; } |
de meme que getboundingClientRect non?
j'ai ajouté le top/bottom mais le but etait d'avoir le top/left en un seul coup et du coup maintenant on a les 4 valeurs
on est bon comme ca ?
oui c'est vrai chez moi rest une variable globale representant un div
... de meme que getboundingClientRect non?
on est bon comme ca ?
Code : | Sélectionner tout |
1 2 3 4 5 6 | return { "left": oLeft, "Top": oTop, "Right": oLeft += memo.offsetWidth, "Bottom": oTop += memo.offsetHeight } |
Code : | Sélectionner tout |
1 2 3 4 5 6 | return { "left": oLeft, "top": oTop, "right": oLeft + memo.offsetWidth, "bottom": oTop + memo.offsetHeight } |
Ok NosMoking
while ofssetparent...= position par rapport au document
getBoundingClientRect() = position par rapport a la window
j'ai testé
disons la fonction de denisC modifié comme je l'ai fait donne une sorte de getBoundingDocumentRect()
j'ai testé bien sur
du coup j'en ai profité pour bien faire la différence aussi entre event.clientx et event.pageX
merci
while ofssetparent...= position par rapport au document
getBoundingClientRect() = position par rapport a la window
j'ai testé
disons la fonction de denisC modifié comme je l'ai fait donne une sorte de getBoundingDocumentRect()
j'ai testé bien sur
du coup j'en ai profité pour bien faire la différence aussi entre event.clientx et event.pageX
merci
Certes mais on s'éloigne de la proposition initiale qui est, et reste retrouver les coordonnées X et Y d'un objet.
On peut faire quand même plus simple, au résultat de getboundingClientRect il suffit d'ajouter les valeurs de scroll du document et tu auras ta fonction
On peut faire quand même plus simple, au résultat de getboundingClientRect il suffit d'ajouter les valeurs de scroll du document et tu auras ta fonction
Bonjour Nosmoking
oui plus simple certainement ca me permet d'aprendre ce que retourne les fonctions
notament le fait d'utiliser e.pagex au lieu de e.clientx+scroll....
des petites chose comme ca qui peuvent simplifié la vie
je vais la faire cette fonction getboudingdocumentrect() avec clientrect
oui plus simple certainement ca me permet d'aprendre ce que retourne les fonctions
notament le fait d'utiliser e.pagex au lieu de e.clientx+scroll....
des petites chose comme ca qui peuvent simplifié la vie
je vais la faire cette fonction getboudingdocumentrect() avec clientrect
Bonjour
je n'ai pas testé mais je l'ai un peu transformé ta petite routine
je part du principe que moins le moulin tourne mieux c'est
sous cette forme la elle devrait de donner l'equivalent de getboundingclientrect en un seul tour
a tester bien sur
je n'ai pas testé mais je l'ai un peu transformé ta petite routine
je part du principe que moins le moulin tourne mieux c'est
sous cette forme la elle devrait de donner l'equivalent de getboundingclientrect en un seul tour
Code javascript : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | function calcule() { var position = calculeOffset(r); console.log(position.Left); console.log(position.Top); } function calculeOffset(element) { var oLeft = 0; var oTop = 0; while (element) { oLeft += element.offsetLeft; oTop += element.offsetTop; element = element.offsetParent; } return { "left": oLeft, "Top": oTop, "Right": oLeft+=element.offsetWidth, "Bottom": oTop+=element.offsetHeight }; } |
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.