2012-11-01 190 views
0

我正在使用div刷新脚本(如下所示)。 div的内容包含一个自动滚动ul(代码从http://www.dynamicdrive.com/)。刷新工作正常。但刷新后自动滚动不工作div刷新javascript

代码刷新

<script type="text/javascript"> 
     window.onload = setupRefresh; 
     function setupRefresh() 
     { 
      setInterval("refreshBlock();",1000); 
     } 

     function refreshBlock() 
     { 
      $('#list4').load("refreshpage"); 

     } 
    </script> 

代码自动滚动

<script type="text/javascript"> 

     var delayb4scroll=2000 //Specify initial delay before marquee starts to scroll on page (2000=2 seconds) 
     var marqueespeed=1 //Specify marquee scroll speed (larger is faster 1-10) 
     var pauseit=1 //Pause marquee onMousever (0=no. 1=yes)? 

     var copyspeed=marqueespeed 
     var pausespeed=(pauseit==0)? copyspeed: 0 
     var actualheight='' 

     function scrollmarquee(){ 
      if (parseInt(cross_marquee.style.top)>(actualheight*(-1)+8)) 
       cross_marquee.style.top=parseInt(cross_marquee.style.top)-copyspeed+"px" 
      else 
       cross_marquee.style.top=parseInt(marqueeheight)+8+"px" 
     } 

     function initializemarquee(){ 
      cross_marquee=document.getElementById("vmarquee") 
      cross_marquee.style.top=0 
      marqueeheight=document.getElementById("list4").offsetHeight 
      actualheight=cross_marquee.offsetHeight 
      if (window.opera || navigator.userAgent.indexOf("Netscape/7")!=-1){ //if Opera or Netscape 7x, add scrollbars to scroll and exit 
       cross_marquee.style.height=marqueeheight+"px" 
       cross_marquee.style.overflow="scroll" 
       return 
      } 
      setTimeout('lefttime=setInterval("scrollmarquee()",30)', delayb4scroll) 
     } 

     if (window.addEventListener) 
      window.addEventListener("load", initializemarquee, false) 
     else if (window.attachEvent) 
      window.attachEvent("onload", initializemarquee) 
     else if (document.getElementById) 
      window.onload=initializemarquee 


    </script> 

可能有人请帮助?

回答

0

好像你需要调用initializemarquee()装载完成后。您可以在​​的回调中执行此操作。

function refreshBlock(){ 
    $('#list4').load("refreshpage", function(){ 
    clearInterval(lefttime); 
    initializemarquee() 
    }); 
} 

我几乎忘了补充一点,你也想停止那个时间间隔。

+0

谢谢你,帮助 – simpleuser

0

你只需要:

function refreshBlock() 
     { 
      $('#list4').load("refreshpage"); 
      initializemarquee(); 

     } 
0

为什么混合使用纯JS和jQuery?如果你有jQuery使用它

这是我的重写。没有测试但我认为在jQuery的可以做,不能,它应该做这件事

$(function() { 
    var sId = setInterval(function { 
    $('#list4').load("refreshpage"); 
    },1000); 
    var $cross_marquee=$("#vmarquee") 
    var delayb4scroll=2000 //Specify initial delay before marquee starts to scroll on page (2000=2 seconds) 
    var marqueespeed=1 //Specify marquee scroll speed (larger is faster 1-10) 
    var pauseit=true //Pause marquee onMousever (false=no. true=yes)? 
    var copyspeed=marqueespeed; 
    var pausespeed=(pauseit==0)? copyspeed: 0; 
    var actualheight=$cross_marquee.height(); 
    var marqueeheight=$("#list4").height(); 
    $cross_marquee.top(0); 

    if (window.opera || navigator.userAgent.indexOf("Netscape/7")!=-1){ //if Opera or Netscape 7x, add scrollbars to scroll and exit 
    $cross_marquee.height(marqueeheight); 
    $cross_marquee.css("overflow","scroll"); 
    } 
    else var tId = setTimeout(function() { 
    lefttime=setInterval(
    function() { 
     var top = $cross_marquee.top(); 
     if (top>(actualheight*(-1)+8)) $cross_marquee.top(top-copyspeed) 
     else $cross_marquee.top(marqueeheight+8); 
    } 

    },30) 
    , delayb4scroll); 

}); 
+0

谢谢你的回复错别字或事物分开。我没有足够的积分upvote。再次感谢你的答案 – simpleuser