我有<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);
答案 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 强>
答案 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;
}