我正在尝试刷新函数内的if
语句,但它给了我一个错误
canont读取状态属性
$.getJSON("<url>/clients.json", function(data) {
var tr;
for (var i = 0; i < data.length; i++) {
tr = $('<tr/>');
tr.append("<td>" + data[i].client + "</td>");
$('table').append(tr);
var refresh = function() {
if (data[i].status == "up") {
$('td', tr).css ('background-color', '#88d066');
} else {
$('td', tr).addClass("statusHOSTDOWN");
};
};
setTimeout(refresh, 5000);
}
});
JSON示例:
[{
"client": "client1",
"ip": "127.0.0.1",
"status": "up"
}, {
"client": "client2",
"ip": "127.0.0.2",
"status": "up"
}]
在没有在setTimeout中运行整个函数的情况下,使用JSON中的新信息重新运行if
语句和更新表颜色的最佳方法是什么。因为在seTimeout
中运行整个函数只需在现有表的底部附加更多表而不用新信息替换它。
答案 0 :(得分:0)
首先通过调试确保'data'参数确实具有属性状态,如果是,则在声明函数var refresh之前将data [i]的值提取到变量。
var myDataStatus = data[i].status;
var refresh = function() {...
在if中直接从myDataStatus引用“up”。
答案 1 :(得分:-2)
请试试这段代码:
function refresh(statusVal, trObj){
if(statusVal == "up")
{
$('td',trObj).css ('background-color', '#88d066');
} else {
$('td',trObj).addClass("statusHOSTDOWN");
};
}
$.getJSON("<url>/clients.json",
function (data) {
var tr;
for (var i = 0; i < data.length; i++) {
tr = $('<tr/>');
tr.append("<td>" + data[i].client + "</td>");
$('table').append(tr);
setTimeout(function(){refresh(data[i].status, tr);}, 5000);
}
});