2013-07-29 65 views
0

我試圖在網頁http://login.secureserver.net/index.php?app=wbe上獲取元素(密碼輸入)的位置。我在Chrome的javascript控制檯中鍵入此代碼JavaScript不返回正確的值(元素的位置)

function fp(obj){ 
    var x=0,y= 0; 
    if (obj.offsetParent) { 
     do { 
      x+= obj.offsetLeft; 
      y+= obj.offsetTop; 
      } while (obj = obj.offsetParent); 
    } 
}; 
fp(document.getElementById('password')); 
console.log("x="+x+"; y="+y) 

並返回x = 809; Y = 380。

使用photoshop測量截圖時,它似乎有x = 816; Y = 388。

那麼,這是什麼問題,爲什麼它沒有返回真正的距離?

+0

你的目標是什麼?也許這是一個寬度和高度的圖像,你不認爲它! – Armen

+0

這是一個密碼輸入 – Enve

+0

我的猜測是它與某個相關元素的CSS樣式有關。你可以嘗試使用'element.getBoundingClientRect();'這裏建議:http://stackoverflow.com/questions/442404/dynamically-retrieve-the-position-xy-of-an-html-element也許這將導致到不同的結果? – basilikum

回答

0

你在你的問題中包含標籤jQuery,所以我假設你已經在使用它。

我推薦使用的功能.position()這一點,它應該會返回X和的Y座標的password input

var p = $('#password').position(); 
console.log("x=" + p.left + "; y=" + p.top); 

如果你不使用jQuery,element.getBoundingClientRect()是好的,但它不」沒有jQuery提供的跨瀏覽器修復。

+0

我不使用jQuery,我需要它與JavaScript。 – Enve

+0

@Enve然後你最好的選擇是使用'element.getBoundingClientRect()'。 – federicot