当前位置:编程学习 > C#/ASP.NET >>

碰到一个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>
结果运行的时候总是在打**出提示找不到对象,但禁用脚本调试后运行结果却是正常的,到底是怎么回事啊,望高手赐教
--------------------编程问答-------------------- 这个好像和你的浏览器版本有关系,有的脚本不兼容! --------------------编程问答--------------------
引用 1 楼 lester19872007 的回复:
这个好像和你的浏览器版本有关系,有的脚本不兼容!

不是 document.getElementById符合web标准的吗 --------------------编程问答-------------------- 你得测试使是什么浏览器  。 然后在找控件 。  getElementById 能找IE的  如果是火狐的 , 那就不是了。  document.all("chkAgree")  我经常用这个   用document.getElementById("chkAgree")少,但是都是IE , 其他浏览器我没测试过 --------------------编程问答-------------------- 求c#  asp.net帅傅,有点菜也没关系。只要不比我菜。联系QQ137422008 --------------------编程问答--------------------  你是不是document.documentElement.scrollTop  这句错了 --------------------编程问答--------------------
引用 3 楼 wang2129929 的回复:
你得测试使是什么浏览器 。 然后在找控件 。 getElementById 能找IE的 如果是火狐的 , 那就不是了。 document.all("chkAgree") 我经常用这个 用document.getElementById("chkAgree")少,但是都是IE , 其他浏览器我没测试过

谢谢,我用的ie,document.all("chkAgree")只能用于ie,而document.getElementById("chkAgree")支持多类浏览器,而且我也用document.all("chkAgree")试过了,还是不行,觉得可能是我的程序逻辑有问题 --------------------编程问答-------------------- document.body.scrollTop   你该成这个。   --------------------编程问答--------------------
引用 5 楼 wang2129929 的回复:
你是不是document.documentElement.scrollTop 这句错了

这句有啥问题吗 --------------------编程问答-------------------- 这个是  设置 页面的 滚动轴的位置 --------------------编程问答-------------------- 你能先告诉我你哪句错了吗?  要实现什么功能。。 --------------------编程问答--------------------
引用 10 楼 wang2129929 的回复:
你能先告诉我你哪句错了吗? 要实现什么功能。。

var a=parseInt(document.getElementById("difonefloat").style.top);
这句错了,说找不到对象,我想实现一个滑动块,滚动屏幕的时候这个块一直保持在屏幕右上方

--------------------编程问答-------------------- div中必须要有style

style="position:absolute;left:100px;top:100px" --------------------编程问答--------------------
引用 12 楼 xys_777 的回复:
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")); 看看能找到不。 。 如果这都找不到。 
那我就没办法了。 --------------------编程问答--------------------
引用 14 楼 wang2129929 的回复:
alert(document.getElementById("difonefloat")); 看看能找到不。 。 如果这都找不到。 
那我就没办法了。

非常感谢你的热心帮助 --------------------编程问答-------------------- 没事。 。JS  就得alert 一点一点调试。 。很麻烦。   我以前写JS放大镜的时候,比这麻烦多了,  还有向迅雷手页滚动  ,  都不难, 就是调试闹心,  我也笨,  迅雷首页的JS没有扒下来 --------------------编程问答-------------------- 我在我的ie里执行,没有问题 --------------------编程问答-------------------- 我发现还是因为dom没有加载完毕的原因,但使用
window.onload=function(){
  heartBeat();
  window.setInterval("heartBeat()",1);
}
不就是等加载完毕了再调用吗
--------------------编程问答--------------------
引用 17 楼 xys_777 的回复:
我在我的ie里执行,没有问题

恩,我在本机调试也没问题的,但上传到服务器后,由于网络慢的原因就会出现这个错误,应该是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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,