我有一个路障,每隔1秒调用一次功能。加载页面时代码运行一次,如果我手动刷新页面,它会再次运行。提前谢谢!
以下是代码:
//query the function S1M1StatusInt every second
setInterval(function () {S1M1StatusInt()}, 1000);
下面的Test_tag是0-4范围内的int:=“Skid 1”.Test_tag:是解决PLC标签的语法。
// Change the Skid 1 Meter 1 block from grey to red or green based on "Skid 1".Test_tag
function S1M1StatusInt() {
var dim1= :="Skid 1".Test_tag:;
switch (dim1)
{
case 1:
document.getElementById("S1M1Status").className ="";
document.getElementById("S1M1Status").className = "RedBlock";
break;
case 2:
document.getElementById("S1M1Status").className ="";
document.getElementById("S1M1Status").className = "RedBlock";
break;
case 3:
document.getElementById("S1M1Status").className ="";
document.getElementById("S1M1Status").className = "GreenBlock";
break;
}}
-----编辑epascarello -----
function CheckS1M1StatusInt(){
$.ajax({
Type: "Get",
url: "Meter_Status/S1M1_Status.htm",
data: {*** what goes in here if I am retreving data***},
success: successCheck,
error: errorcheck
});
}
function successCheck(data){
switch (data)
{
case 1:
document.getElementById("S1M1Status").className ="";
document.getElementById("S1M1Status").className = "RedBlock";
break;
case 2:
document.getElementById("S1M1Status").className ="";
document.getElementById("S1M1Status").className = "RedBlock";
break;
case 3:
document.getElementById("S1M1Status").className ="";
document.getElementById("S1M1Status").className = "GreenBlock";
break;
};
Console.log(data);
window.setTimeout(checkServer,1000);
}
function errorCheck(){
console.log(arguments);
}
答案 0 :(得分:2)
var dim1= :="Skid 1".Test_tag:;
这完全是胡说八道。解析失败导致你的函数执行失败的方式如此壮观,以至于整个计时器都被杀死了。
答案 1 :(得分:2)
问题是浏览器不会继续更新服务器端代码。 PLC标签[无论是什么]被渲染一次,它不会继续从服务器获取新值。这就是为什么它永远不会改变。
您需要做的是对服务器进行Ajax调用并检查状态。
function checkServer() {
$.ajax({
type: "POST",
url: "URLToPageToCheck/foo.php",
data: { "itemX" : "whatYouWantToSendUp"},
success: successCheck,
error: errorCheck
});
}
function successCheck(data){
//Logic Check Here
console.log(data);
//Call checkServer again with a delay
window.setTimeout(checkServer,1000);
}
function errorCheck(){
console.log(arguments);
}
答案 2 :(得分:-2)
从这个开始
setInterval(function () {S1M1StatusInt()}, 1000);
应该只是
setInterval(S1M1StatusInt, 1000);
在这里,您的语句格式错误,导致错误。 PLC是一种与JavaScript,HTML和其他形式的Web标记不同的语言,不起作用。
var dim1= :="Skid 1".Test_tag:;
此外,您可以设置类名而不使用jQuery清除它
Object.attr('class', 'className');
或者使用toggleClass或addClass / removeClass函数。阅读更多here