2011-11-12 7 views
3

私は自分のドキュメントに追加しようとしているJavaScript関数を持っていて、リアルタイムで更新されているという感覚を与えています。 MVCコントローラへのAJAX呼び出しで、JSON結果を返し、それを一番上のリストに追加し、最後のliを非表示にして最後のliを削除します。Javascript関数は正しく8回、その後はいつも

問題は、機能が完璧に8回動作し、つまらないということです。最初の8回の後、関数はリストの最後の項目を隠すだけです。だから、最初の8つの実行後に、私のリストは、1つの李スクリプトの他のすべての実行によって成長:私はこの作業を取得するためにいくつかのことを試してみました

<script type="text/javascript"> 
    $(document).ready(function() { 
     function latestBranch() { 
      $.getJSON("Home/LatestWristband", null, function (html) { 
       var showHideSpeed = 200; 
       var firstLI = $("#recentBranches ul li").first(); 
       if (firstLI.text() !== html) { 
        firstLI.before('<li>' + html + '<\li>'); 
        $("#recentBranches ul li").first().hide().show(showHideSpeed); 
        $("#recentBranches ul li").last().hide(showHideSpeed/4, 
         function() { 
          $("#recentBranches ul li").last().remove(); 
         }); 
       } 
      }); 
     }; 
     setInterval(latestBranch, 500); 
    }); 
</script> 

はここに私の関数です。私の最初の考えは、スクリプトが最後のリスト項目を取り除くことよりも間隔が速かったことです。しかし、これをgetのために5000の間隔でテストし、要素のhide/showのために1000をテストしました。次の呼び出しの前に少なくとも3000ms余分に。私は8回の後に同じ問題を得るしかし

$("#recentBranches ul li").last().remove(); 

:に

$("#recentBranches ul li").last().hide(showHideSpeed/4, 
         function() { 
          $("#recentBranches ul li").last().remove(); 
         }); 

:私もこれを変更しようとしています。それは毎回働くだけのこのリズムになった後、それはindefinetlyにそれを保つが、それはそうだ。私は気付いてみましたが、私はこれらの症状を説明するものを見つけることができませんでした...

+0

誰かが私が完了した後に自分自身を呼び出す関数の再帰的なオプションで代わりのsetTimeoutを使用することを示唆していたこの行は

の変化(1秒は空白です) 、遅れて。私はそれを試みましたが、同じ問題があります。私はブラウザのキャッシュをクリアして、ブラウザのスクリプトが今変更したものであることを確認しました。 – tostringtheory

答えて

3

<li>を閉じるには間違ったスラッシュを使用しています。つまり実際には2 <li>要求。これに

firstLI.before('<li>' + html + '<\li>'); 

firstLI.before('<li>' + html + '</li>'); 
+1

優秀!愚かな間違いは、それをキャッチしている必要があります。私はそれが1つおきになる前に8回働いたので、私がしなかった理由があると思います。私は8回正しいことを理解することができました。リストには元々7つの項目があるので、7番目を削除すると、それは誤った李のものでした。しかし、なぜそれが毎回働いたのか説明できますか?それは7を削除し、その後追加を続けたが、決して削除しない場合、私はそれをキャッチした可能性があります。私はそれが本当に奇妙で面白いことがわかります – tostringtheory

+1

ああ、申し訳ありませんが、私は要求に応じて2つの李が見えませんでした!私は正しいあなたの答えをマークして、それをup'ed!本当にありがとう。 – tostringtheory

関連する問題