[英]If-else condition not executing correctly in Javascript
我希望這個問題不要太愚蠢,但我會堅持下去,並嘗試過可能的事情。 我在要動態添加的表行中有一個下拉列表,並且正在將change事件與該下拉列表相關聯。 我在這里有以下代碼:
$(document).on("change", $('tr').find('select'), function(){
if ($(this).val() == 0){
$('#items_selected').text(1);
alert("2nd time wrong");
}else{
alert("2nd time right");
$('#items_selected').text(parseInt($('#items_selected').text()) + parseInt($(this).val()));
}
});
現在,有一個復選框,選中該復選框會導致下拉列表(以前被禁用)被啟用,這會正確觸發change事件,並執行上面代碼中的if
條件。 但是,當我將下拉列表中的值從默認值0更改為其他值時,該事件會觸發,但是再次執行if
條件,而不是else,現在應該可以了。 我的事件類型( change
)是否有問題,或者我的數據類型(字符串/數字)是否混亂,還是其他原因? 我嘗試了parseInt()
和其他方法,但是它們沒有起作用。 有人可以幫忙嗎?
您應該檢查選擇文本值,例如$(this).find("option:selected").val()
下面的代碼有效:
$(document).on("change", $('tr').find('select'), function(){
if ($(this).find("option:selected").val() == 0){
alert($(this).find("option:selected").val());
}else{
alert($(this).find("option:selected").val());
}
});
工作場所
在本次代碼調用on
的$(document)
。 結果,在事件處理程序中, this
將是document
(即使您實際上正在查看下拉列表中發生的事件)。
您可以嘗試如下操作:
$("#the-select").on("change", function(){ // good practice: always use "===" if ($(this).val() === "0"){ $('#items_selected').text(1); alert("2nd time wrong"); }else{ alert("2nd time right"); $('#items_selected').text(parseInt($('#items_selected').text()) + parseInt($(this).val())); } });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select id="the-select"> <option>0</option> <option>1</option> <option>2</option> <option>3</option> </select> <div id="items_selected">0</div>
如果你絕對要叫on
上$(document)
雖然我不明白為什么你會),那么請記住, this
不會是你的下拉列表。 將其放在較高范圍的變量中,在處理程序中重新選擇它,或bind
您的處理程序bind
到下拉列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.