[英]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.