在IE下的JS代码的问题

诸葛非卿 发布于 2011/06/23 16:17
阅读 261
收藏 0

在IE下,offsetParent在IE中无法定位到BODY直接定位在HTML上面,是什么问题啊??

下面是代码:

this.fix_div_coordinate = function(){
        var leftpos=0;
        var toppos=0;
        aTag = this.object;
        do {
            aTag = aTag.offsetParent;
            alert(aTag.tagName);
            leftpos    += aTag.offsetLeft;
            toppos += aTag.offsetTop;
        }while(aTag.tagName!="BODY");
        document.getElementById("getiframe").style.width = this.object.offsetWidth + 'px';
        if(document.layers){
            document.getElementById("getiframe").style.left = this.object.offsetLeft    + leftpos + "px";
            document.getElementById("getiframe").style.top = this.object.offsetTop +    toppos + this.object.offsetHeight + 2 + "px";
        }else{
            document.getElementById("getiframe").style.left =this.object.offsetLeft    + leftpos  +"px";
            document.getElementById("getiframe").style.top = this.object.offsetTop +    toppos + this.object.offsetHeight + 'px';
        }
        document.getElementById("getplatform").style.width = this.object.offsetWidth + 'px';
        if(document.layers){
            document.getElementById("getplatform").style.left = this.object.offsetLeft    + leftpos + "px";
            document.getElementById("getplatform").style.top = this.object.offsetTop +    toppos + this.object.offsetHeight + 2 + "px";
        }else{
            document.getElementById("getplatform").style.left =this.object.offsetLeft    + leftpos  +"px";
            document.getElementById("getplatform").style.top = this.object.offsetTop +    toppos + this.object.offsetHeight + 'px';
        }
    }

这里绕开了BODY直接定位在HTML上面了。

前台是这样:

 <div class="coverMainContents">
    <div class="coverMainContents1">
      <span class="singl"><input type="radio" name="coverRadio" checked="true" class="checked2">单程</span>
      <span class="double"><input type="radio" name="coverRadio" class="checked1">往返</span>
    </div>
   
    <div class="coverMainContents2">
      <span class="city1">城市</span>
      <span id="adjust1">从<input type="text" class="from" /><img src="img/js1.jpg" class="jsPic1" /></span>

      <span id="adjust2" >至<input name="city" type="text" id="city" value="中文/拼音" onfocus=showSearch(this) onblur=showSearch(this,1) onclick="suggest.display(this,'cityName',event)" onkeyup="suggest.display(this,'cityName',event)"  class="to" /><img src="img/js1.jpg" class="jsPic2" /></span>
 
    </div>

 

但是如果是前台是这样的应用那么就发生变化了

<body>
<div></div>
<div>
<p></p>
<div align="center">
<p>你会喜欢的</p>
<span >
<input name="city" type="text" id="city" value="中文/拼音" onfocus=showSearch(this) onblur=showSearch(this,1) onclick="suggest.display(this,'cityName',event)" onkeyup="suggest.display(this,'cityName',event)" />
</span>
</div>
</div>
 </body>

这个就直接定位在BODY上面,我所要的效果就显现出来了

请问那位高手帮忙解释下!

以下是问题补充:

@james.xu:先把代码format一下,让帮你解决问题的人容易看一点。而且尽量少贴一点与问题无关的代码 (2011/06/23 16:28)
加载中
0
xyz555
xyz555

你要弄明白

do {
            aTag = aTag.offsetParent;
            alert(aTag.tagName);
            leftpos    += aTag.offsetLeft;
            toppos += aTag.offsetTop;

        }while(aTag.tagName!="BODY");

段代码是什么意思


0
诸葛非卿
诸葛非卿
我明白,如果是在焦点不是BODY上面的时候就会执行这段代码,问题是: leftpos    += aTag.offsetLeft;抱错找不到对象,让我咋整!!
0
诸葛非卿
诸葛非卿
即使使用如下代码段,报错还是会出现:    var leftpos=0;
        var toppos=0;
        aTag = this.object;
        do {
            aTag = aTag.offsetParent.parentNode;
            //alert(aTag.tagName);
            leftpos    += aTag.offsetLeft;
            toppos += aTag.offsetTop;
       
        }while(aTag.tagName!=null&& aTag.tagName!="BODY");
0
xyz555
xyz555

瞎说,什么“焦点不是BODY上面的时候就会执行这段代码”。

你都没有理解对。

这段代码是获得aTag(this.object)的绝对坐标( left, top)。

要没body这个标签都是个死循环。

返回顶部
顶部