我有一个脚本,它使用JSON数据在容器div中创建元素。我有另一个脚本,它定期更新JSON数据,但是我在尝试使用setInterval将新的JSON数据在创建的元素中自动更新(没有刷新页面)时遇到了问题。
我正在创建变量:
function renderElement(ajaxResponse) {
var responseArray = JSON.parse(ajaxResponse);
var container = document.getElementById("container");
然后我使用JSON数据来创建我的html:
for (var i = 0; i < responseArray.length; i += 1) {
var element = document.createElement("div");
element.className = "element";
}
var Score = document.createElement("p");
Score.className = "Score";
Score.innerHTML = responseArray[i].Score;
element.appendChild(Score);
container.appendChild(element);
}
}
当我刷新页面时,JSON中其他脚本更新的数据确实会出现,但是我想在不刷新页面的情况下显示新数据。我一直在尝试使用setInterval来做到这一点。我遇到的一个问题是JSON数据必须在页面加载时可用,然后然后每5秒更新一次,否则更广泛的脚本(同位素)将不会自行绘制。
在下面的回复之后,我将以下内容放在我的代码的各个部分中(在函数内,在函数之后等)。页面加载,但我仍然无法在更新JSON时更新innerHTML元素(不刷新页面):
setInterval(function() {renderElement(ajaxResponse); }, 5000);
非常感谢任何帮助
更新:
我已将其更改为:
setInterval(function() {renderElement(json); }, 5000);
所以我的ajaxResponse变量正在使用最新数据进行更新,然后尝试添加
setInterval(function() {renderElement(ajaxResponse); }, 10000);
在更新innerHTML元素的函数中。我认为它的工作,因为我可以看到正在绘制多个实例(在原件后面)。我现在正试图“清除”元素div,所以当它更新时,它不会保留第一组数据。
答案 0 :(得分:0)
你应该调用renderElement函数而不是ajaxResponse,但要调用setInterval中带参数的函数,你需要使用functon() { FuncHere() }
这是完整的代码:
setInterval(function() {renderElement(ajaxResponse); }, 5000);