我需要使用布尔变量的值来触发一个动作,我会在几个场合使用它,然后以最好的方式做我非常重要的事情。
我已经搜索并找到了使用object.watch
的方法,如下所示:
let test1 = {on: false};
teste1.watch('on', function (prop, oldval, newval) {
if (teste1.on === true) {
$('#bot').toggleClass('switch-bck');
} else {
$('#bot').toggleClass('switch');
}
return newval;
});
interact('#bot2')
.on('down', function (event) {
event.currentTarget.classList.toggle('switch');
event.preventDefault();
if (teste1.on) {
teste1.on = false;
} else {
teste1.on = true;
}
document.getElementById('demo').innerHTML = teste1.on;
})
.on('up', function (event) {
event.currentTarget.classList.toggle('switch');
event.preventDefault();
document.getElementById('demo').innerHTML = teste1.on;
});
document.getElementById('demo').innerHTML = teste1.on;
这几乎可行。 当我改变teste1.on的状态时,前2次效果很好。但在此之后,将teste1.on的两倍更改用于
$( '#机器人')toggleClass( '开关-BCK');
被激活。但我看到teste1.on正确更改,因为我看到它的值
document.getElementById('demo')。innerHTML = teste1.on;
如果我将return newval
更改为return oldval
甚至将其删除,那么我想要的更改就会完美无缺,但我所用的价值
document.getElementById('demo')。innerHTML = teste1.on;
保持冻结或显示“未定义”。
有任何帮助吗?甚至可以在不使用.watch的情况下执行此操作?