簡體   English   中英

if-else條件無法在Javascript中正確執行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM