簡體   English   中英

JavaScript間隔循環卡住

[英]Javascript interval loop stuck

我寫了一個Javascript間隔循環,除非我點擊了停止它的按鈕,否則它只是停留在運行的部分。

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>JScript Loop</title>


  <script type="text/javascript" src="data.json"></script>
  <script type='text/javascript'>//<![CDATA[
  window.onload=function(){
  var stop = false;
  var go = false;
  var obj = document.getElementById("btn").addEventListener("click", function () {
      stop = true;
  });
  var obj = document.getElementById("btn2").addEventListener("click", function () {
      stop = false;
  });

  var interval;

  function loop() {
      var result = document.getElementById("result");
      var layout = document.getElementById("layout");

      if (!stop) {
          result.innerHTML = "Running...";      
      } else {
          result.innerHTML = "Stopped...";
      }
  }
  interval = setInterval(loop, 500);


      var result2 = document.getElementById("result2");
      do{
      var mydata = JSON.parse(data);    
        result2.innerHTML = mydata[0].name;
      }while(stop);


  }//]]> 

  </script>

  </head>
  <body>
    <p id="result"></p>
  <button id="btn">Stop</button>
  <button id="btn2">Start</button>
  <p id="result2"></p>
  </body>

  </html>

我希望完成的是在data.json更新mydata[0].name 文件,它將發出停止,使其變為假並重新加載頁面。

基本上,整個代碼都是從iframe源的數據文件中加載變量,因此,如果數據文件未更改,它將為iframe保留相同的src ,但是如果mydata[0].name變量更改了,頁面將重新加載新的src並將其加載到iframe中。

在過去的幾個小時中,我一直堅持這一點,只是無法將其匯總到需要使用的內容上。

UPDATE 9/25/2015代碼更改

<html>
<head>
<title></title>
<script src="jquery.min.js"></script>
</head>
<body>  
<script>
$.ajaxSetup({ cache: false });
function loadChirp(){ //start function
var ThePath;
   $.getJSON("http://127.0.0.1/data.json", 
        function(data){
            var CurPath = data.path;
            var ChkPath = data.path;
            display('Cur Path is: ' + CurPath);
        }); 
} //end function 

function tick(CurPath, ChkPath) {
    var CurPath = CurPath;  
    $.getJSON("http://127.0.0.1/data.json", 
        function(data2){
            display('Cur Path is: ' + CurPath);
            var ChkPath = data2.path;
            if(ChkPath !== CurPath) {
                var ChkPath = data2.path;
                var CurPath = data2.path;
                display('ChkPath is: ' + ChkPath);
            }

        });
}       
function display(msg) {
    var p = document.createElement('p');
    p.innerHTML = msg;
    document.body.appendChild(p);
}
$(document).ready(function(){ 
var CurPath;
var ThePath;
//DOCUMENT READY FUNCTION
loadChirp();
setInterval(tick, 30000); // Set for 1 Minute to use 1 hour its 3600000
}); 
//DOCUMENT READY FUNCTION 

</script>  
</body>
</html> 

data.json文件僅在頁面加載時加載一次。

它不會在頁面的生命周期內刷新自身。 因此var mydata = JSON.parse(data); 將始終是從內存而不是從服務器提取的相同數據

如果您正在尋找對該文件的更新,則需要使用ajax再次檢索數據並在ajax完成回調中進行檢查。

至於間隔停止,除了單擊按鈕之外,代碼中沒有其他任何東西可以使間隔停止。

while(stop)將創建一個無限循環競爭條件。 擺脫它!

任何進一步的協助都是困難的,因為還不清楚您要完成什么

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM