[英]Javascript If else is executing if and a part of the else
我有一個我不明白為什么會發生的問題。 我有一個公社If else,但正在執行if和else的一部分,並且僅在第一次執行時發生。
HTML代碼:
<div class="span3 options-search">
<select id="condition[0]" name="condition[0]" onchange="checkCriterial(this.value,0);">
<option value="2">Id</option>
<option value="3">private</option>
<option value="11">author</option>
<option value="1">Date</option>
<option value="4">externalId</option>
<option value="5">Email</option>
<option value="9">string</option>
<option value="10">Date</option>
<option value="6">numeric</option>
<option selected="selected" value="7">true-false</option>
<option value="8">numeric</option>
</select>
</div>
<div class="span1 criterial-search-0">
<select class="span1" id="criterial[0]" name="criterial[0]">
<option value="1">=</option>
</select>
</div>
<div class="span3 condition-quicksearch-0">
<select class="span2 search-value-0" id="valuevar[0]" name="valuevar[0]" ><option value="false">False</option> <option value="true">True</option></select>
</div>
JS代碼:
checkCriterial = function (condition, id) {
if (condition == 1 || condition == 10) {
$('.search-value-' + id).attr('placeholder', '31/12/2015').addClass("datepicker").attr("data-date-format", "dd/mm/yyyy").attr("data-link-format", "yyyy-mm-dd");
$(".criterial-search-" + id).html('<select class="span1" id="criterial[' + id + ']" name="criterial[' + id + ']"><option value="1">=</option><option value="2">>=</option><option value="3"><=</option></select>');
} else if (condition == 7) {
$('.condition-quicksearch-' + id).html('<select class="span2 search-value-' + id + '" id="valuevar[' + id + ']" name="valuevar[' + id + ']" ><option value="false">False</option> <option value="true">True</option></select>');
$(".criterial-search-" + id).html('<select class="span1" id="criterial[' + id + ']" name="criterial[' + id + ']"><option value="1">=</option></select>');
} else {
$('.condition-quicksearch-' + id).html('<input type="text" class="span3 search-value-' + id + ' search" id="valuevar[' + id + ']" name="valuevar[' + id + ']" />');
$(".criterial-search-" + id).html('<select class="span1" id="criterial[' + id + ']" name="criterial[' + id + ']"><option value="1">=</option></select>'); //<- this is also executed
}
};
我為此https://jsfiddle.net/wr5p4xf7/創建了一個jsfiddle
如果選擇date
選項,它將執行if語句和else的第二行。
我檢查的第一件事是放在方括號中,看起來不錯。
任何想法?
謝謝大家
這是行不通的,因為您的search-value-0字段已初始化為select元素,您需要刪除當前的search-value-0 ,創建一個新的元素輸入,並在此之后將datepicker類插入到element中。
我已經更改了您的提琴,可以在第一個條件內創建輸入,並且現在可以正常工作了。
if (condition == 1 || condition == 10) {
$('.condition-quicksearch-' + id).html('<input type="text" class="span3 search-value-' + id + ' search" id="valuevar[' + id + ']" name="valuevar[' + id + ']" />');
$('.search-value-' + id).attr('placeholder', '31/12/2015').addClass("datepicker").attr("data-date-format", "dd/mm/yyyy").attr("data-link-format", "yyyy-mm-dd");
$(".criterial-search-" + id).html('<select class="span1" id="criterial[' + id + ']" name="criterial[' + id + ']"><option value="1">=</option><option value="2">>=</option><option value="3"><=</option></select>');
}
在我的瀏覽器(Linux Ubuntu,Chrome 45)中,每個循環均按預期處理:
checkCriterial()
:
condition
的值取決於在選擇框中選擇的選項。 condition
為1或10時,它處理if (condition == 1 || condition == 10) { [...] }
。 condition
為7時,它處理if (condition == 7) { [...] }
。 condition
不是1、7或10時,它將處理else { [...] }
。 請參閱此經過修改的Fiddle ,在其中提醒一些調試信息。
如果您希望使用console.log
進行調試而不是使用window alert
,請嘗試使用此Fiddle 。
問題似乎在於,當您的條件為1或10時,您忘記了用輸入框替換select語句。
您已針對else
條件正確執行了此操作,但似乎已經忘記了要為if (condition == 1 || condition == 10) { [...] }
。
在您的jsfiddle中,只有if
/ else
構造的第一塊正在執行。 要看到這個:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.