2

我有一个<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);
4

2 回答 2

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);
});

检查小提琴

同样可以写在一行中,并且可以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();

另一个小提琴

鼠标按下小提琴

于 2013-07-22T00:14:17.017 回答
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;
}
于 2013-07-22T00:16:15.613 回答