+ -
当前位置:首页 → 问答吧 → jquery模拟marquee求助

jquery模拟marquee求助

时间:2009-04-13

来源:互联网

我用三个层模拟marquee的效果如下
复制代码
  1. <div class="fileoptarea_out">
  2. <div class="notification_left">
  3. 公告:</div>
  4. <div class="notification_right" id="demo">
  5. <div id="demo1">
  6. <div>
  7. <a href="#">this is a test</a></div>
  8. <div>
  9. <a href="#">this is a test1</a></div>
  10. <div>
  11. <a href="#">this is a test2</a></div>
  12. </div>
  13. <div id="demo2">
  14. </div>
  15. </div>
  16. </div>

不在jquery下运行以下代码可以实现,
复制代码
  1. <script>
  2. var speed=30
  3. var demo=document.getElementById("demo");
  4. var demo1=document.getElementById("demo1");
  5. var demo2=document.getElementById("demo2");
  6. demo2.innerHTML=demo1.innerHTML
  7. function Marquee(){
  8. if(demo2.offsetTop-demo.scrollTop<=0)
  9. demo.scrollTop-=demo1.offsetHeight
  10. else{
  11. demo.scrollTop++
  12. }
  13. }
  14. var MyMar=setInterval(Marquee,speed)
  15. demo.onmouseover=function() {clearInterval(MyMar)}
  16. demo.onmouseout=function() {MyMar=setInterval(Marquee,speed)}
  17. </script>

但改为jquery后就不行了,求助看一下哪里改的不对
复制代码
  1. $(document).ready(function() {
  2. var speed = 80;
  3. $("#demo2").html($("#demo1").html());
  4. var MyMar = setInterval(Marquee, speed);
  5. $("#demo").onmouseover = function() { clearInterval(MyMar) }
  6. $("#demo").onmouseout = function() { MyMar = setInterval(Marquee, speed) }
  7. });
  8. function Marquee() {
  9. if ($("#demo2").offset().top - $("#demo").scrollTop <= 0)
  10. $("#demo").scrollTop -= $("#demo1").offset().height();
  11. else {
  12. $("#demo1").scrollTop++
  13. }
  14. }
[ 此帖被itboy在2009-04-13 14:40重新编辑 ]

作者: itboy   发布时间: 2009-04-13

最后还是用两者结合的方法搞定了,但不知道为什么,重点应该还是 Marquee函数的问题,有哪位高手看看问题到底出在哪里
复制代码
  1. $(document).ready(function() {
  2.             var speed = 50;
  3.             var demo = $("#demo")[0];
  4.             var demo1 = $("#demo1")[0];
  5.             var demo2 = $("#demo2")[0];
  6.             $("#demo2").html($("#demo1").html());
  7.             
  8.             var MyMar = setInterval(Marquee, speed);
  9.             
  10.             $("#demo").mouseover(function() { clearInterval(MyMar) });
  11.             $("#demo").mouseout(function() { MyMar = setInterval(Marquee, speed); });
  12.         });
  13.         function Marquee() {
  14.             if (demo2.offsetTop - demo.scrollTop <= 0)
  15.                 demo.scrollTop -= demo1.offsetHeight
  16.             else {
  17.                 demo.scrollTop++
  18.             }
  19.         }

作者: itboy   发布时间: 2009-04-13