程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> javascript-用offsetLeft為什麼輸出的是0

javascript-用offsetLeft為什麼輸出的是0

編輯:編程綜合問答
用offsetLeft為什麼輸出的是0
 <style>
 #div1 {
    width:500px;
    height:500px;
    margin-left:100px;
    border:solid 1px black;
 }
 #div2 {
     width:300px;
     height:300px;
     margin-left:50px;
     border:solid 1px red;
 }
 </style>
 <body>
    <div id="div1">
        <div id="div2">
        </div>
    </div>
 </body>
 <script>
    function ww() {
        var obj = document.getElementById("div2");
        par1 = obj.offsetParent;
        alert(par1.offsetLeft);
    }
    ww();
 </script>

在火狐和谷歌上面都是輸出0,為什麼不是50?謝謝
圖片說明

最佳回答:


感覺樓主在這裡有二個地方需要注意,首先par1 是div1元素,而不是div2,所以它的offsetLeft值應該是100,而不是50
另外,之所以是零,是因為在js中,**當某個元素及其DOM結構層次中元素都未進行CSS定位時(absolute或者relative)[或者某個元素進行CSS定位時而DOM結構層次中元素都未進行CSS定位時],則這個元素的offsetParent屬性的取值為根元素。更確切地說,這個元素的各種偏移量計算(offsetTop、offsetLeft等)的參照物為Body元素。(其實無論時標准兼容模式還是怪異模式,根元素都為Body元素)_**

所以,樓主可以將代碼改為

#div1 { position: absolute; width:500px; height:500px; margin-left:100px; border:solid 1px black; } #div2 { width:300px; height:300px; margin-left:50px; border:solid 1px red; }







<br> function ww() {<br> var obj = document.getElementById(&quot;div2&quot;);<br> par1 = obj.offsetParent;<br> alert(par1.offsetLeft);<br> }<br> ww();<br>

這樣就輸出100了,也不是100,准確的說是108

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved