MozTW 討論區

各項 Mozilla 相關軟體與技術討論
現在的時間是 2025-06-26, 17:51

所有顯示的時間為 UTC + 8 小時





發表新文章 回覆主題  [ 4 篇文章 ] 
發表人 內容
文章發表於 : 2007-07-22, 19:40 
離線

註冊時間: 2007-06-20, 15:36
文章: 30
假設一個<div></div>區段沒設定它的left和top,因為我不想把它定位,這樣用javascript能抓到他的座標嗎?我試過直接抓他的left和top可能因為沒設定,所以都沒值,有辦法得知他在網頁上的座標嗎?或其他類似的,我有找到offsetLeft,offsetTop,但是不知道事用法錯了還是怎樣,麻煩各位了。


最後由 fanta 於 2007-07-27, 10:43 編輯,總共編輯了 1 次。

回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2007-07-22, 20:25 
離線

註冊時間: 2007-06-20, 15:36
文章: 30
代碼:
function func(targ)
{
   var element = targ;
   var xPos = targ.offsetLeft;
   var yPos = targ.offsetTop;
   while( targ = targ.offsetParent )
    {
        yPos += targ.offsetTop;
        xPos += targ.offsetLeft;
    }
   document.getElementById(element.id+"div").style.left = xPos;
   document.getElementById(element.id+"div").style.top = yPos;
   
}


我已經找到答案了,但是while迴圈在做什麼我就看不懂了,感覺這樣會變成無限回圈,小弟不才,知道的人麻煩解釋一下,謝謝。


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2007-07-26, 13:39 
離線
[網站管理員]
頭像

註冊時間: 2004-09-27, 09:24
文章: 1685
fanta 寫:
代碼:
function func(targ)
{
   var element = targ;
   var xPos = targ.offsetLeft;
   var yPos = targ.offsetTop;
   while( targ = targ.offsetParent )
    {
        yPos += targ.offsetTop;
        xPos += targ.offsetLeft;
    }
   document.getElementById(element.id+"div").style.left = xPos;
   document.getElementById(element.id+"div").style.top = yPos;
   
}


我已經找到答案了,但是while迴圈在做什麼我就看不懂了,感覺這樣會變成無限回圈,小弟不才,知道的人麻煩解釋一下,謝謝。

他這是找累積座標的,先找目前元素的相對座標(相對,因為以母元素為參照),接著,往上一層,找母元素的相對座標,把這是些座標一個一個加起來,直到找不到母元素為止。
Prototype 這個 js lib 就有專門在處理 Position (位置)的函式,像剛剛提的,cumulativeOffset
代碼:
  cumulativeOffset: function(element) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;
      element = element.offsetParent;
    } while (element);
    return [valueL, valueT];
  }

雖然程式碼不大一樣,用的也是類似的機制。
如果寫很多跟 DOM 或 Ajax 有關的 JS,最好用個 JS 函式庫,比較有利。

_________________
korp + korp 中文站(沒精神更新)


回頂端
Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2007-07-26, 23:52 
離線

註冊時間: 2007-06-20, 15:36
文章: 30
感謝大大的解釋,原來offset是相對位置喔,我以為是絕對位置,長了知識。


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5
 個人資料  
引用回覆  
顯示文章 :  排序  
發表新文章 回覆主題  [ 4 篇文章 ] 

所有顯示的時間為 UTC + 8 小時


誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 8 位訪客


不能 在這個版面發表主題
不能 在這個版面回覆主題
不能 在這個版面編輯您的文章
不能 在這個版面刪除您的文章
不能 在這個版面上傳附加檔案

搜尋:
前往 :  
Powered by phpBB® Forum Software © phpBB Group
正體中文語系由 竹貓星球 維護製作
© moztw.org, Mozilla Foundation
MozTW,Mozilla 台灣社群