有人知道一种实时控制JavaScript变量的方法吗?
我正在实现一个代码,面对自动请求(通过pad签名),当它到达最后一个签名时,必须调出一个按钮(之前隐藏).激活/取消激活的代码如下:
function checkButton() {
var test = Clientinformation.WorkstepFinishCurrentlyAllowed;
if (test == false) {
$("#btnCustomFinish").addClass("hidden");
} else {
$("#btnCustomFinish").removeClass("hidden");
}
}
我尝试使用setInterval()函数的解决方案,该函数每隔几秒运行一次检查但我发现效率不高.
setInterval(function() {
checkButton();
}, 500);
有没有人知道如何通过事件来实现它,以便他正在执行?
问候
解决方法:
一种选择是使用Proxy for Client代理,以便对Clientinformation的WorkstepFinishCurrentlyAllowed属性进行赋值,从而切换按钮上的类:
const $btn = $("#btnCustomFinish");
const Clientinformation = new Proxy({}, {
get(obj, prop) {
return obj[prop];
},
set(obj, prop, val) {
obj[prop] = val;
if (prop !== 'WorkstepFinishCurrentlyAllowed') return;
if (val) {
$btn.removeClass("hidden");
} else {
$btn.addClass("hidden");
}
}
});
console.log('start');
setTimeout(() => Clientinformation.WorkstepFinishCurrentlyAllowed = true, 500);
setTimeout(() => Clientinformation.WorkstepFinishCurrentlyAllowed = false, 1000);
setTimeout(() => Clientinformation.WorkstepFinishCurrentlyAllowed = true, 1500);
setTimeout(() => Clientinformation.WorkstepFinishCurrentlyAllowed = false, 2000);
.hidden {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="btnCustomFinish" class="hidden">button</div>