<script language="javascript">
var gox=1;
var goy=1;
function move()
{
var x=document.getElementById("layer1").style.left;
var y=document.getElementById("layer1").style.top;

var speedx=1;
var speedy=1*speedx;

var w=window.document.body.offsetWidth;
var h=window.document.body.offsetHeight;

if((parseInt(x)+200>w)||(parseInt(x)<0))
gox=-gox;
if((parseInt(y)+150>h)||(parseInt(y)<0))
goy=-goy;

document.getElementById("layer1").style.left=parseInt(x)+speedx*gox;
document.getElementById("layer1").style.top=parseInt(y)+speedy*goy; setTimeout("move()",10);
}
</script>不知道为什么. h值始终是0,取不到offsetHeight的值啊。 怎么回事? 我用body.clientHeight结果也是0

解决方案 »

  1.   


    /**
     * 得到浏览器的可视宽度与高度
     */
    getScreenParm = function(){
    var width = 0;
    var height = 0;
    if(document.compatMode == "CSS1Compat"){
    width = document.documentElement.clientWidth;
    height = document.documentElement.clientHeight;
    }
    else{
    width = document.body.clientWidth;
    height = document.body.clientHeight;
    }
    return {"width":width,"height":height};
    }
    这种方法应该就可以得到网页的可视宽度和高度了,我自己都是这么用的,不会出现0的情况。
      

  2.   

    可能性:1.可能代码有错,注意左下角有无JS错误提示2.DOCTYPE不同,适用得方法也不同
      

  3.   

    body不是DOM的根结点document.documentElement这个可以获取的.
    offsetWidth,clientWidth,楼主可以自行研究解决他们之间的不同....