2010-06-08 5 views
2

J'ai besoin de calculer offsetRight d'un objet DOM. J'ai déjà un code assez simple pour obtenir le offsetLeft, mais il n'y a pas de propriété javascript offsetRight. Si j'ajoute offsetLeft et offsetWidth, cela fonctionnera-t-il? Ou y a-t-il un meilleur moyen?Besoin de calculer offsetRight en javascript

function getOffsetLeft(obj) 
{ 
    if(obj == null) 
     return 0; 
    var offsetLeft = 0; 
    var tmp = obj; 
    while(tmp != null) 
    { 
     offsetLeft += tmp.offsetLeft; 
     tmp = tmp.offsetParent; 
    } 
    return offsetLeft; 
} 

function getOffsetRight(obj) 
{ 
    if (obj == null) 
     return 0; 
    var offsetRight = 0; 
    var tmp = obj; 
    while (tmp != null) 
    { 
     offsetRight += tmp.offsetLeft + tmp.offsetWidth; 
     tmp = tmp.offsetParent; 
    } 
    return offsetRight;  
} 
+0

Que voulez-vous faire avec "offsetRight"? La raison "gauche" et "haut" sont là, c'est que le haut à gauche de la fenêtre (ou toute boîte de conteneur, vraiment) sont fixes; viewframe stretching/shrinking arrive (conceptuellement) à droite et en bas. – Pointy

+0

Je dois dessiner un div derrière les objets actuels, et je le fais dans un langage de droite à gauche. Je dois savoir où l'objet (texte) se termine sur le droit de savoir où positionner le bord droit de la div. Puisque tout fonctionne dans le DOM de gauche à droite, c'est un casse-tête. –

Répondre

0

Si vous êtes intéressé à utiliser une bibliothèque Js essayez les fonctionnalités suivantes de js prototype http://api.prototypejs.org/dom/element/offset/

+0

C'est juste une autre façon de faire ce que offsetLeft fait déjà, et ne me donne toujours pas offsetRight. Comment est-ce utile? –

2
//Object references 
function getObject(id) { 
    var object = null; 
    if (document.layers) { 
    object = document.layers[id]; 
    } else if (document.all) { 
    object = document.all[id]; 
    } else if (document.getElementById) { 
    object = document.getElementById(id); 
    } 
    return object; 
} 
//Get pixel dimensions of screen 
function getDimensions(){ 
    var winW = 630, winH = 460; 
    if (document.body && document.body.offsetWidth) { 
    winW = document.body.offsetWidth; 
    winH = document.body.offsetHeight; 
    } 
    if (document.compatMode=='CSS1Compat' && document.documentElement && document.documentElement.offsetWidth) { 
    winW = document.documentElement.offsetWidth; 
    winH = document.documentElement.offsetHeight; 
    } 
    if (window.innerWidth && window.innerHeight) { 
    winW = window.innerWidth; 
    winH = window.innerHeight; 
    } 
    return{"width":winW, "height":winH} 
} 
//Get the location of element 
function getOffsetRight(elem){ 
    element=getObject(elem) 
    var width = element.offsetWidth 
    var right = 0; 
    while (element.offsetParent) { 
     right += element.offsetLeft; 
     element = element.offsetParent; 
    } 
    right += element.offsetLeft; 
    right = getDimensions()["width"]-right 
    right -= width 
    return right 
} 

Ce n'est pas l'épreuve des balles, mais vous pouvez généralement obtenir le « offsetRight » en appelant : getOffsetRight ("[object.id]")

Questions connexes