document.body.scrollTop 值总为0的解决方法 比较常见的标准问题_javascript技巧

做页面的时候可能会用到位置固定的层,读取 document.body.scrollTop 来设置层的位置,像这样:­

window.onscroll = function (){
var oFix = document.getElementById("divfix");
oFix.style.top = document.body.scrollTop + "px";
}

可是怎么没有达到预期效果呢,输出 document.body.scrollTop 的值一看,一直都是 0。原来是 DTD 的问题,要是页面直接用 开头的话就没有问题了。但是要符合 web 标准,DTD 当然是不能少的。具有 DTD 时用 document.documentElement.scrollTop 代替 document.body.scrollTop 就可以了。­

window.onscroll = function (){
var oFix = document.getElementById("divfix");
oFix.style.top = document.documentElement.scrollTop + "px";
}

编者注:­

页面具有 DTD(或者说指定了 DOCTYPE)时,使用 document.documentElement。
页面不具有 DTD(或者说没有指定了 DOCTYPE)时,使用 document.body。
在 IE 和 Firefox 中均是如此。
为了兼容,可以使用如下代码: var scrollTop = window.pageYOffset
|| document.documentElement.scrollTop
|| document.body.scrollTop
|| 0;

时间: 2024-09-29 19:07:53

document.body.scrollTop 值总为0的解决方法 比较常见的标准问题_javascript技巧的相关文章

JS模态窗口返回值兼容问题的完美解决方法_javascript技巧

因系统要兼容原IE已使用的关闭方法,经调试测得,需对window.dialogArguments进行再较验,不然易出问题. function OKEnd(vals) { if (vals == null) vals = "TRUE"; if (typeof (window.opener) == "undefined") { if (typeof (window.dialogArguments) != "undefined") { if (wind

Android线程中设置控件的值提示报错的解决方法_Android

本文实例讲述了Android线程中设置控件的值提示报错的解决方法.分享给大家供大家参考,具体如下: 在Android线程中设置控件的值一般会与Handler联合使用,如下: package com.yarin.android.Examples_04_15; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import andro

Android线程中设置控件的值提示报错的解决方法

本文实例讲述了Android线程中设置控件的值提示报错的解决方法.分享给大家供大家参考,具体如下: 在Android线程中设置控件的值一般会与Handler联合使用,如下: package com.yarin.android.Examples_04_15; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import andro

chrome下jq width()方法取值为0的解决方法_jquery

http://photo.163.com/shixiaojian089/train/28002 这是网易的一个相册,看到后想试着做做看. 在我的制作方法中,需要获取到每张照片的宽度,所以很自然就使用了jq的width()方法.在ff跟ie下运行问题不大,但是到了chrome上,就出现问题了. 使用alert排查,发现chrome下width方法取到的值都是0.这样子的话,想来就是脚本运行到这的时候图片根本没加载好.问题应该出在$(function(){});上,因为这个方法只要求加载完dom就开

发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载_javascript技巧

好多天没有发过日志了~  最近写了一个图片浏览器,是为PHPCMS文件管理器设计的,但后来看到了Lightbox,所以就改了一下,可以给一般的网页使用.  演示及说明地址:  http://longbill.cn/down/sample/blueshow/index.htm  使用方法:   1.下载 blueshow.js 文件,放到服务器上  你也可以直接使用这个: http://www.jb51.net/downtools/blueshow.js  2.在你要用此程序的网页中写上这句(在和

【转】Eclipse maven工程 Missing artifact com.sun:tools:jar:1.6.0:system 解决方法

解决方案一:通过maven取运行时参数,eclipse提供的环境变量,基本类似System.getProperty("java.home") <dependency>           <groupId>com.sun</groupId>           <artifactId>tools</artifactId>           <version>1.5.0</version>      

MSSQL中进行SQL除法运算结果为小数却显示0的解决方法_MsSql

今天在用MSSQL进行SQL除法运算时,发现运算结果有小数,而整数部分为0时,结果直接显示为0,经过一翻测试发现了解决方法,拿来分享. 假设有如下的一段SQL除法运算: select field1/field2 from table 假设其运算结果应该为0.123,但实际在MSSQL查询编辑器中运算直接就显示为0了,那么要想显示其真实结果,有什么办法呢?方法就是将分子field1的数据类型强制转换为float型,方法如下: select cast(field1 as float)/field2

MSSQL中进行SQL除法运算结果为小数却显示0的解决方法

今天在用MSSQL进行SQL除法运算时,发现运算结果有小数,而整数部分为0时,结果直接显示为0,经过一翻测试发现了解决方法,拿来分享. 假设有如下的一段SQL除法运算: select field1/field2 from table 假设其运算结果应该为0.123,但实际在MSSQL查询编辑器中运算直接就显示为0了,那么要想显示其真实结果,有什么办法呢?方法就是将分子field1的数据类型强制转换为float型,方法如下: select cast(field1 as float)/field2

火狐在用offsetHeight获取div的高度时为0的解决方法

火狐在需要获取div的高度时,往往需要用到offsetHeight,有时会碰到offsetHeight获取到为0的现象, 在使用IE或者火狐中,特别在目前div+css的方式,往往不定义div的高度,这是在添加div内容后,需要获取div的高度时,往往需要用到offsetHeight. 在使用中,有时会碰到offsetHeight获取到为0的现象,但如果你用各种JS调试工具调试,又能在对象中看到值(如果直接指向offsetHeight是没值的,但如果是对象查看是有值的,在调试器中回车查看对象就已