Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用javascript实时检查window.variable对象_Javascript_Jquery_Html - Fatal编程技术网

是否可以使用javascript实时检查window.variable对象

是否可以使用javascript实时检查window.variable对象,javascript,jquery,html,Javascript,Jquery,Html,有人知道如何在JavaScript中实时控制变量吗 我正在实现一个代码,当自动请求(通过pad签名)到达最后一个签名时,它必须在某个点上打开一个按钮(之前处于隐藏状态)。激活/禁用代码如下: function checkButton() { var test = ClientInformation.WorkstepFinishCurrentlyAllowed; if (test == false) { $("#btnCustomFinish").addClass(

有人知道如何在JavaScript中实时控制变量吗

我正在实现一个代码,当自动请求(通过pad签名)到达最后一个签名时,它必须在某个点上打开一个按钮(之前处于隐藏状态)。激活/禁用代码如下:

function checkButton() {
    var test = ClientInformation.WorkstepFinishCurrentlyAllowed;
    if (test == false) {
        $("#btnCustomFinish").addClass("hidden");
    } else {
        $("#btnCustomFinish").removeClass("hidden");
    }
}
我尝试了一个使用setInterval()函数的解决方案,该函数每隔几秒钟运行一次检查,但我发现它不是很有效

setInterval(function() { 
    checkButton(); 
}, 500);
是否有人知道如何通过事件来实现它,以便他能够执行

如有必要,使用一些代码自动检查变量值的变化


关于

一个选项是为
客户端信息
使用
代理
,以便当前允许对
客户端信息
工作步骤完成
属性进行赋值,从而在按钮上切换类:

const$btn=$(“#btnCustomFinish”);
const ClientInformation=新代理({}{
获取(对象、道具){
返回对象[prop];
},
套装(obj、道具、val){
obj[prop]=val;
如果(prop!=“WorkstepFinishCurrentlyAllowed”)返回;
if(val){
$btn.removeClass(“隐藏”);
}否则{
$btn.addClass(“隐藏”);
}
}
});
console.log('start');
setTimeout(()=>ClientInformation.WorkstepFinishCurrentlyAllowed=true,500);
setTimeout(()=>ClientInformation.WorkstepFinishCurrentlyAllowed=false,1000);
setTimeout(()=>ClientInformation.WorkstepFinishCurrentlyAllowed=true,1500);
setTimeout(()=>ClientInformation.WorkstepFinishCurrentlyAllowed=false,2000)
。隐藏{
显示:无;
}


按钮
指定方法的可能重复项不起作用。我想您可能需要查看自定义事件。基本上,通知某些内容已更改的责任在于流程本身,然后它只触发一个事件。您可以在运行时设置自定义事件侦听器,该侦听器将在变量更新后得到通知。但是如何填充
ClientInformation.WorkstepFinishCurrentlyAllowed
。没有特定的超时,它是可变的。我想找到一个解决方案,实时监控变量,当其值发生变化时,我想激活一个按钮…你好,当然性能,感谢您的回复。如前所述,我正在寻找一种涉及特定事件的解决方案,而不是基于时间的方法,如setinterval()或settimeout(),因为它们被认为对性能有不良影响。你还有其他建议吗?感谢查看答案中的代码-这正是它所做的,它侦听变量的更改(更具体地说,是属性值的更改)。那里的
setTimeout
s仅用于演示目的,因此可以看到现场演示。没有进行轮询,正如您通过
setTimeout
回调所看到的那样,它们只是重新分配属性,代理看到了该重新分配,并实现了所需的显示和隐藏功能。感谢您的响应。但当我执行代码时,页面返回了以下错误:未捕获的语法错误:标识符'ClientInformation'已经声明。我想要测试的变量是ClientInformation.WorkstepFinishCurrentAllowed。我必须用另一个名字更改“const ClientInformation”吗?抱歉,我不熟悉代码。不能两次声明
const
变量名。只声明一次,并确保任何重新分配该属性的操作都是在代理对象上重新分配该属性。嗨,谢谢,但我对Javascript特别感兴趣。我试图按照您的示例重命名所有受影响的变量,特别是ClientInformation[WorkstepFinishCurrentlyAllowed],但是这不起作用,因为它似乎在声明常量之后就卡住了。如果可能的话,我希望能有一个更适合我的答案。