Javascript 变量值检查是';行不通
我有一个Javascript 变量值检查是';行不通,javascript,jquery,if-statement,Javascript,Jquery,If Statement,我有一个我正在单击以更改变量的值。变量会更改,但如果(oneorzero==0)则永远不起作用。它总是继续==0。即使变量不同,它的作用仍然相同。我做错了什么 编辑: 我漏掉了一部分。更改变量后,我需要检查onmousedown函数,看看它是否工作。这是我的问题 var oneorzero = 0; var onmousedownfunction= function() { if(oneorzero == 0){ alert('One or Zero equals 0'); //D
我正在单击以更改变量的值。变量会更改,但如果(oneorzero==0)则永远不起作用。它总是继续==0
。即使变量不同,它的作用仍然相同。我做错了什么
编辑:
我漏掉了一部分。更改变量后,我需要检查onmousedown函数,看看它是否工作。这是我的问题
var oneorzero = 0;
var onmousedownfunction= function() {
if(oneorzero == 0){
alert('One or Zero equals 0');
//Do something
};
if(oneorzero == 1){
alert('One or Zero equals 1');
//Do something
};
};
$('.class').click(function(){
val_class = $(this).attr('value');
if(val_class == '0'){
$(this).attr('value','1');
oneorzero = 1;
};
if(val_class == '1'){
$(this).attr('value','0');
oneorzero = 0;
};
});
$(canvas).mousedown(onmousedownfunction);
将其放置在click事件中
当页面加载时,您编写的方式将只执行一次
也可以使用console.log
而不是alert
,因为它更优雅
您还可以使用parseInt
并使用它消除一个额外的变量
$('.class').click(function () {
var val_class = parseInt($(this).attr('value'), 10),
oneorzero;
if (val_class === 0) {
oneorzero = 1;
} else if (val_class == 1) {
oneorzero = 0;
}
$(this).attr('value', oneorzero );
console.log(val_class);
});
同样可以在一行中写入,并且可以使用三元运算符完全消除if-else
$('.class').click(function () {
var $this = $(this),
val_class = parseInt($(this).attr('value'), 10) === 0 ? 1 : 0 ;
$(this).attr('value', val_class).text(val_class);
console.log(val_class);
}).click();
使用或拆分侦听器内部的条件,否则流将始终进入第二个条件:
if(val_class='0'){
$(this.attr('value','1');
一或零=1;
}如果(val_class=='1'){//no'else',我们将再次设置'value'
$(this.attr('value','0');
一或零=0;
}
我遗漏了问题的一部分。变量更改后,我想检查onmousedown函数。。它是可变主体还是画布。无论如何,在mousedown上,无论我更改了多少次one或zero变量,它仍然将其视为0。我应该在类单击后调用onmousedown函数吗?这就是我做错的吗?你没有直接调用函数。onmousedown事件将触发该函数。因此,无论它放在哪里都无关紧要。只需在声明后触发单击
事件,这样它就会事先有一个值