<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; }這樣就輸出100了,也不是100,准確的說是108