【问题标题】:Update Javascript variables on an interval定期更新 Javascript 变量
【发布时间】:2013-01-29 03:30:42
【问题描述】:

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

【问题讨论】:

  • 你的 responseArray 是一个数组变量而不是一个函数,对吧?如果是这样,您不能将其作为参数传递给 setInterval。你需要一些函数来处理操作。
  • 你的 for 循环什么都不做,是不是要追加元素?现在你创建了变量元素,然后当 for 循环退出时它就丢失了
  • 您的问题完全令人困惑。您似乎只发布了一些无法使用的代码部分。
  • @ryadavilli - 我已经用完整的功能更新了我的帖子,很抱歉造成混乱
  • 但是 responseArray 仍然是一个变量而不是一个函数。

标签: javascript jquery jquery-isotope


【解决方案1】:

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

这是完整的代码:

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

【讨论】:

  • 非常感谢 - 代码应该放在哪里?当我将它放在function renderElement(ajaxResponse) { 之后的线上时,加载数据需要 5 秒,然后加载页面,如果 JSON 发生更改/更新,似乎不会刷新数据。当我在 function renderElement(ajaxResponse) { 函数关闭后放置它时,它会立即加载,但随着 JSON 的更改,它似乎也不会更新 html。
  • 代码可以放在最前面,但是第一次调用需要在setInterval函数前写rednerElement(ajaxResponse);。你能把你的代码贴在你得到 ajaxResponse 的地方吗?
  • 我一直在各个地方尝试对您的代码进行各种迭代,但仍然无法正常工作 - 只是更新您...通常,我没有收到任何错误,但页面似乎挂起,我需要强制重新加载它。
猜你喜欢
  • 2019-02-14
  • 2016-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多