我試圖縮短我的代碼使用if else而不是像通常那樣只是一堆if語句,但是我在某處犯了一個錯誤,並且不明白我在做什麼錯誤。理想情況下,這段代碼應該使「postQuantity」字段具有「Select Fence Height」,「Select Fence Style」,「Select Picket Size」的值,然後在輸入JQuery方程後輸入結果。如果任何人都可以指出我做錯了什麼,將不勝感激!謝謝!這裏是一個的jsfiddle - http://jsfiddle.net/gv0029/8PR9C/這裏是代碼:如果else語句和jQuery
HTML:
<form>
<fieldset id="fence">
<div name="inputFence" class="inputFence">
<legend><strong>Fence Description</strong>
</legend>
<label>Footage:
<input name="footage_1" class="footage" />
</label>
<select name="fenceHeight_1" class="fenceHeight">
<option value="select">Select Fence Height</option>
<option value="6" id="fH6">6 Ft.</option>
<option value="8" id="fH8">8 Ft.</option>
</select>
<select name="fenceStyle_1" class="fenceStyle">
<option value="select">Style</option>
<option value="bnb" id="bnb">Board on Board</option>
<option value="sbs" id="sbs">Side By Side</option>
</select>
<select name="picketSize_1" class="picketSize">
<option value="select">Picket Size</option>
<option value="1x3.5x6" id="1x4">1 x 3.5 x 6</option>
<option value="1x4x6" id="1x4">1 x 4 x 6</option>
<option value="1x5x6" id="1x4">1 x 5 x 6</option>
<option value="1x5.5x6" id="1x4">1 x 5.5 x 6</option>
<option value="1x6x6" id="1x4">1 x 6 x 6</option>
</select>
<legend><strong>Post Type</strong>
</legend>
<label>Picket Quantity
<input name="picketQuantity_1" class="picketQuantity" />
</label>
</div>
</fieldset>
</form>
JS:
//Quantity for Pickets
$(document.body).on('keypress keydown keyup change', '[class^="footage"],[class^="fenceHeight"], [class^="picketSize"],[class^="fenceStyle"], [class^="picketQuantity"]', function() {
var parts = $(this).attr('name').split("_");
fenceNumber = parts[1],
footage = parseFloat($(":input[name='footage_" + fenceNumber + "'" + ']').val(), 10),
fenceHeight = $(":input[name='fenceHeight_" + fenceNumber + "'" + ']').find('option:selected').val(),
fenceStyle = $(":input[name='fenceStyle" + fenceNumber + "'" + ']').find('option:selected').val(),
picketSize = $(":input[name='picketSize" + fenceNumber + "'" + ']').find('option:selected').val(),
picketQuantity = $(":input[name='picketQuantity_" + fenceNumber + "'" + ']'),
total = '';
if (!isNaN(Number(fenceHeight))) {
if (fenceStyle == 'sbs') {
if (picketSize == '1x3.5x6' || picketSize == "1x4x6" || picketSize == "1x5x6") {
total = (((Math.ceil((footage * 12)/3.5)) * 1.05));
} else if (picketSize == '1x5.5x6' || picketSize == "1x6x6") {
total = (((Math.ceil((footage * 12)/5.5)) * 1.05));
} else {
total = "Select Picket Size";
}
picketQuantity.val(total);
} else if (fenceStyle == 'bnb') {
if (picketSize == '1x3.5x6' || picketSize == "1x4x6" || picketSize == "1x5x6") {
total = (((Math.ceil((footage * 12)/8.5)) * 3) * 1.05);
} else if (picketSize == '1x5.5x6' || picketSize == "1x6x6") {
total = (((Math.ceil((footage * 12)/10.5)) * 3) * 1.05);
} else {
total = "Select Picket Size";
}
picketQuantity.val(total);
} else {
picketQuantity.val("Select Fence Style");
}
} else {
picketQuantity.val("Select Fence Height");
}
});
你有什麼跡象表明,什麼是錯的?當你在調試器中完成這一步時,該邏輯在什麼時候表現得不像你期望的那樣? – David
「做錯了什麼?」的後果是什麼?換句話說,我們需要知道與應該發生的事情相比,哪些事情沒有發生。 –
很抱歉,它得到的輸出是「選擇柵欄風格」,就是這樣。無論我選擇什麼風格,即使我選擇了風格,也只是不斷說「選擇圍欄風格」。 – mario