我希望在我的所有treeView节点上运行一些代码,具体取决于从数据库返回的值,并重复此操作直到返回某个值。
我在想:
这里有两个问题。如何为每个节点运行我的函数以及如何在JavaScript中执行计时器,因此:
$(function(){
$('cssClassOfAllMyNodes').WhatFunctionToCallHere?((){
//How do I do Timer functionality in JavaScript?
ForEachTimeInterval
{
//use Ajax to go to database and retrieve a value
AjaxCallBackFunction(result)
{
if (result = 1)
//How to stop the timer here?
}
}
});
});
希望我很清楚。非常感谢
非常感谢答案。我希望你对设计发表评论。
基本上我正在尝试实现的是Windows Wokflow类型功能,其中我树中的每个节点根据其状态更新其映像,其状态来自使用树节点唯一的密钥查询数据库。如果您有任何其他方法,我愿意接受其他方法。再次感谢
答案 0 :(得分:3)
答案 1 :(得分:1)
你可以这样做:
$(function(){
$('cssClassOfAllMyNodes').each(function (){
// Do something with "this" - "this" refers to current node.
});
});
在JS中处理计时器的正确方法是引用每个超时或间隔,然后清除它们。
它们之间的区别是:
所以你可以这样做:
var delay = 2000; // miliseconds
var timer = setTimeout("functionToBeCalled", delay);
clearTimeout(timer); // whenever you need.
请注意,您可以使用要调用的函数的名称将字符串传递给setTimeout(与setInterval相同)。或者您可以传递对函数本身的引用:
var callback = function () { alert(1); };
var timer = setTimeout(callback, delay);
请确保不要为AJAX请求设置间隔,因为您的响应可能会延迟,并且对服务器的连续调用最终可能会重叠。
相反,你应该调用setTimeout,当答案到达时再调用setTimeout。