我写了一个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>
我希望完成的是mydata[0].name
在data.json
内更新。文件,它将发出停止变为false并重新加载页面。
基本上,整个代码是从iframe源的数据文件加载变量,因此如果数据文件没有更改,它会为iframe保持相同的src
,但是如果mydata[0].name
变量发生更改后,页面将重新加载并将新src
加载到iframe中。
我在过去的几个小时里一直坚持这一点,并且无法将它整合到我需要用来修复它的地方。
更新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>
答案 0 :(得分:0)
data.json
文件只会在页面加载时加载一次。
它不会在页面的生命周期内刷新自己。
因此,var mydata = JSON.parse(data);
将始终是从内存中提取的相同数据,而不是从服务器
如果您要查找该文件的更新,则需要使用ajax再次检索数据并在ajax完成回调中检查它。
至于间隔停止,除了单击按钮外,代码中没有任何内容可以停止。
while(stop)
将创建无限循环竞争条件。摆脱它!
任何进一步的帮助都很困难,因为你想要实现的目标并不是很清楚