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事件将触发该函数。因此,无论它放在哪里都无关紧要。只需在声明后触发
单击
事件,这样它就会事先有一个值