碰到一个JavaScript做滑动块的棘手问题,望高手解决
<script type="text/javascript">lastScrollY=0;
function heartBeat()
{
var diffY;
if (document.documentElement && document.documentElement.scrollTop)
diffY = document.documentElement.scrollTop;
else if (document.body)
diffY = document.body.scrollTop;
else
{/*Netscape stuff*/}
percent=.1*(diffY-lastScrollY);
if(percent>0)percent=Math.ceil(percent);
else percent=Math.floor(percent);
** var a=parseInt(document.getElementById("difonefloat").style.top);
document.getElementById("difonefloat").style.top=a+percent+"px";
lastScrollY=lastScrollY+percent;
}
window.onload=function(){
heartBeat();
window.setInterval("heartBeat()",1);
}
</script >
html里定义了
<DIV id="difonefloat">
<asp:Button ID="btnSave" runat="server" OnClick="btnSave_Click" Text="保存" /></DIV>
结果运行的时候总是在打**出提示找不到对象,但禁用脚本调试后运行结果却是正常的,到底是怎么回事啊,望高手赐教
--------------------编程问答-------------------- 这个好像和你的浏览器版本有关系,有的脚本不兼容! --------------------编程问答--------------------
不是 document.getElementById符合web标准的吗 --------------------编程问答-------------------- 你得测试使是什么浏览器 。 然后在找控件 。 getElementById 能找IE的 如果是火狐的 , 那就不是了。 document.all("chkAgree") 我经常用这个 用document.getElementById("chkAgree")少,但是都是IE , 其他浏览器我没测试过 --------------------编程问答-------------------- 求c# asp.net帅傅,有点菜也没关系。只要不比我菜。联系QQ137422008 --------------------编程问答-------------------- 你是不是document.documentElement.scrollTop 这句错了 --------------------编程问答--------------------
谢谢,我用的ie,document.all("chkAgree")只能用于ie,而document.getElementById("chkAgree")支持多类浏览器,而且我也用document.all("chkAgree")试过了,还是不行,觉得可能是我的程序逻辑有问题 --------------------编程问答-------------------- document.body.scrollTop 你该成这个。 --------------------编程问答--------------------
这句有啥问题吗 --------------------编程问答-------------------- 这个是 设置 页面的 滚动轴的位置 --------------------编程问答-------------------- 你能先告诉我你哪句错了吗? 要实现什么功能。。 --------------------编程问答--------------------
var a=parseInt(document.getElementById("difonefloat").style.top);
这句错了,说找不到对象,我想实现一个滑动块,滚动屏幕的时候这个块一直保持在屏幕右上方
--------------------编程问答-------------------- div中必须要有style
如
style="position:absolute;left:100px;top:100px" --------------------编程问答--------------------
我加的,比较长我就贴代码的时候删了,下面是div的style
<DIV id="difonefloat"
style="right:0px;POSITION:absolute;top:40px;background-color:Yellow; border:solid 1px red; font:normal red; width:200px; height:45px; text-align:center">
<asp:Button ID="btnSave" runat="server" OnClick="btnSave_Click" Text="保存我的试卷" /></DIV> --------------------编程问答-------------------- alert(document.getElementById("difonefloat")); 看看能找到不。 。 如果这都找不到。
那我就没办法了。 --------------------编程问答--------------------
非常感谢你的热心帮助 --------------------编程问答-------------------- 没事。 。JS 就得alert 一点一点调试。 。很麻烦。 我以前写JS放大镜的时候,比这麻烦多了, 还有向迅雷手页滚动 , 都不难, 就是调试闹心, 我也笨, 迅雷首页的JS没有扒下来 --------------------编程问答-------------------- 我在我的ie里执行,没有问题 --------------------编程问答-------------------- 我发现还是因为dom没有加载完毕的原因,但使用
window.onload=function(){
heartBeat();
window.setInterval("heartBeat()",1);
}
不就是等加载完毕了再调用吗
--------------------编程问答--------------------
恩,我在本机调试也没问题的,但上传到服务器后,由于网络慢的原因就会出现这个错误,应该是dom没有加载完成 --------------------编程问答-------------------- onload应该是页面加载完成后的事件,要不就这样试试
function go(){
heartBeat();
window.setInterval("heartBeat()",1);
}
<body onload="go()">
--------------------编程问答-------------------- 我自己解决了,加了一个判断,等dom加载完就ok
if(document.getElementById("difonefloat"))
{
var a=parseInt(document.getElementById("difonefloat").style.top);
document.getElementById("difonefloat").style.top=a+percent+"px";
lastScrollY=lastScrollY+percent;
}
在此谢谢各位的热情帮助,给了我很大的启发 --------------------编程问答-------------------- ding!
补充:.NET技术 , ASP.NET