2013-07-22 85 views
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); 

回答

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

+0

餘留的問題出的一部分。變量更改後,我想檢查onmousedown函數。 – Brian

+0

什麼是畫布在這裏..是一個變量 –

+0

身體或畫布。無論如何,在mousedown上,無論我改變oneorzero變量多少次,它仍然將其視爲0. – Brian

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