变量值检查不起作用

时间:2013-07-22 00:12:30

标签: javascript jquery if-statement

我有<div>我点击以更改变量的值。变量发生了变化,但if(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);

2 个答案:

答案 0 :(得分:2)

将其放在点击事件中。

您编写的方式只会在页面加载时执行一次。

同时使用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);
});

<强> Check Fiddle

同样可以写在一行中,并且可以通过使用三元运算符完全消除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();

<强> Another Fiddle

Mousedown fiddle

答案 1 :(得分:1)

使用else拆分侦听器内的条件,否则流将始终进入第二个条件:

if (val_class == '0') {
    $(this).attr('value', '1');
    oneorzero = 1;
} else if (val_class == '1') { // no 'else', and we'd be setting 'value' again
    $(this).attr('value', '0');
    oneorzero = 0;
}