0

我有一个使用 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,因此当它更新时,它不会保留第一组数据。

4

1 回答 1

0

您应该调用 renderElement 函数而不是 ajaxResponse ,但要在需要使用的 setInterval 中调用带有参数的函数functon() { FuncHere() }

这是完整的代码:

setInterval(function() {renderElement(ajaxResponse); }, 5000);

于 2013-01-28T17:49:45.263 回答