0

div 更新スクリプトを使用しています (以下を参照)。div のコンテンツには、自動スクロール ul ( http://www.dynamicdrive.com/のコード) が含まれています。リフレッシュは正常に機能しています。しかし、更新後、自動スクロールが機能しません

リフレッシュのコード

    <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>

誰か助けてくれませんか?

4

3 に答える 3

0

initializemarquee()ロードが完了した後に呼び出す必要があるようです。.load()のコールバックでこれを行うことができます。

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

その間隔も止めたいと付け加えるのをほとんど忘れていました。

于 2012-11-01T13:01:14.883 に答える
0

あなただけが必要です:

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

        }
于 2012-11-01T12:58:44.760 に答える
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);

});
于 2012-11-01T13:13:48.063 に答える