我正在建立一個表單。其中有9個選項的選擇器,全部相似但彼此不同。如何在switch語句之後調用函數?
我打電話calcTotal()
功能後,在選擇的每一個變化。 calcTotal
有9個開關語句。我想我沒有正確地調用calcTotal
函數。因爲在我選擇一個選項後,adultTotal
和childTotal
未按指定更新,而是顯示爲「未定義」。
每次選擇後如何調用函數? (我有4個在這種情況下,「typeSel」,「c1bed」,「c2bed」,「c3bed」)
$(document).ready(function() {
$('#typeSel').on('change', function() {
switch (this.value) {
case '1': {
$("#a1det").show();
$("#cdet,#a2det,#a3det,#a4det").hide();
$("#a1det :input,#adult1").attr("disabled", false);
$("#cdet :input,#childr :input,#a2det :input,#a3det :input,#a4det :input,#adult2,#adult3,#adult4").attr("disabled", true);
document.getElementById("booktype").value = "1";
document.getElementById("adultNum").value = "1";
document.getElementById("childNum").value = "0";
booktype = 1;
return booktype;
break;
}
case '2': {
$("#a1det, #a2det").show();
$("#cdet,#a3det,#a4det").hide();
$("#a1det :input,#a2det :input,#adult2").attr("disabled", false);
$("#cdet :input,#childr :input,#a3det :input,#a4det :input,#adult3,#adult4").attr("disabled", true);
document.getElementById("booktype").value = "2";
document.getElementById("adultNum").value = "2";
document.getElementById("childNum").value = "0";
booktype = 2;
return booktype;
break;
}
case '3': {
$("#a1det, #a2det, #a3det").show();
$("#cdet,#a4det").hide();
$("#a1det :input,#a2det :input,#a3det :input,#adult1,#adult2,#adult3").attr("disabled", false);
$("#cdet :input,#childr :input,#a4det :input,#adult4").attr("disabled", true);
document.getElementById("booktype").value = "3";
document.getElementById("adultNum").value = "3";
document.getElementById("childNum").value = "0";
booktype = 3;
return booktype;
break;
}
case '4': {
$("#a1det, #a2det, #a3det, #a4det").show();
$("#cdet").hide();
$("#a1det :input,#a2det :input,#a3det :input,#a4det :input,#adult1,#adult2,#adult3,#adult4").attr("disabled", false);
$("#cdet :input,#childr :input").attr("disabled", true);
document.getElementById("booktype").value = "4";
document.getElementById("adultNum").value = "4";
document.getElementById("childNum").value = "0";
booktype = 4;
return booktype;
break;
}
case '5': {
$("#a1det, #a2det, #cdet, #c1det").show();
$("#a3det,#a4det,#c2det,#c3det").hide();
$("#a1det :input,#a2det :input,#c1det :input, #child1,#adult1,#adult2,#childTotal").attr("disabled", false);
$("#child2,#child3,#adult3,#adult4,#a3det :input,#a4det :input,#c2det :input,#c3det :input").attr("disabled", true);
document.getElementById("booktype").value = "5";
document.getElementById("adultNum").value = "2";
document.getElementById("childNum").value = "1";
booktype = 5;
return booktype;
break;
}
case '6': {
$("#a1det, #a2det, #cdet, #c1det, #c2det").show();
$("#a3det,#a4det,#c3det").hide();
$("#a1det :input,#a2det :input,#c1det :input,#c2det :input,#adult1,#adult2,#child1,#child2,#childTotal").attr("disabled", false);
$("#child3,#adult3,#adult4,#a3det :input,#a4det :input,#c3det :input").attr("disabled", true);
document.getElementById("booktype").value = "6";
document.getElementById("adultNum").value = "2";
document.getElementById("childNum").value = "2";
booktype = 6;
return booktype;
break;
}
case '7': {
$("#a1det, #a2det, #cdet, #c1det, #c2det, #c3det").show();
$("#a3det,#a4det").hide();
$("#a1det :input,#a2det :input,#c1det :input,#c2det :input,#c3det :input,#adult1,#adult2,#child1,#child2,#child3,#childTotal").attr("disabled", false);
$("#adult3,#adult4,#a3det :input,#a4det :input").attr("disabled", true);
document.getElementById("booktype").value = "7";
document.getElementById("adultNum").value = "2";
document.getElementById("childNum").value = "3";
booktype = 7;
return booktype;
break;
}
case '8': {
$("#a1det, #a2det, #a3det, #cdet, #c1det").show();
$("#a4det,#c2det,#c3det").hide();
$("#a1det :input,#a2det :input,#a3det :input,#c1det :input, #child1,#adult1,#adult2,#adult3,#childTotal").attr("disabled", false);
$("#child2,#child3,#adult4,#a4det :input,#c2det :input,#c3det :input").attr("disabled", true);
document.getElementById("booktype").value = "8";
document.getElementById("adultNum").value = "3";
document.getElementById("childNum").value = "1";
booktype = 8;
return booktype;
break;
}
case '9': {
$("#a1det, #a2det, #a3det, #cdet, #c1det, #c2det").show();
$("#a4det,#c3det").hide();
$("#a1det :input,#a2det :input,#a3det :input,#c1det :input,#c2det :input,#child1,#child2,#adult1,#adult2,#adult3,#childTotal").attr("disabled", false);
$("#child3,#adult4,#a4det :input,#c3det :input").attr("disabled", true);
document.getElementById("booktype").value = "9";
document.getElementById("adultNum").value = "3";
document.getElementById("childNum").value = "2";
booktype = 9;
return booktype;
break;
}
}
return booktype;
calcTotal();
});
$('#c1bed').on('change', function() {
switch (this.value) {
case 'a': {
child1 = childa;
break;
}
case 'b': {
child1 = childb;
break;
}
case 'c': {
child1 = childc;
break;
}
case 'd': {
child1 = childd;
break;
}
}
document.getElementById("child1").value = child1;
calcTotal();
return child1;
});
$('#c2bed').on('change', function() {
switch (this.value) {
case 'a': {
child2 = childa;
break;
}
case 'b': {
child2 = childb;
break;
}
case 'c': {
child2 = childc;
break;
}
case 'd': {
child2 = childd;
break;
}
}
document.getElementById("child2").value = child2;
calcTotal();
return child2;
});
$('#c3bed').on('change', function() {
switch (this.value) {
case 'a': {
child3 = childa;
break;
}
case 'b': {
child3 = childb;
break;
}
case 'c': {
child3 = childc;
break;
}
case 'd': {
child3 = childd;
break;
}
}
document.getElementById("child3").value = child3;
calcTotal();
return child3;
});
});
function calcTotal() {
switch (booktype) {
case '1': {
adultTotal = adult1;
childTotal = 0;
document.getElementById("adultTotal").value = adultTotal;
document.getElementById("childTotal").value = childTotal;
break;
}
case '2': {
adultTotal = +adult1 + +adult2;
childTotal = 0;
document.getElementById("adultTotal").value = adultTotal;
document.getElementById("childTotal").value = childTotal;
break;
}
case '3': {
adultTotal = +adult1 + +adult2 + +adult3;
childTotal = 0;
document.getElementById("adultTotal").value = adultTotal;
document.getElementById("childTotal").value = childTotal;
break;
}
case '4': {
adultTotal = +adult1 + +adult2 + +adult3 + +adult4;
childTotal = 0;
document.getElementById("adultTotal").value = adultTotal;
document.getElementById("childTotal").value = childTotal;
break;
}
case '5': {
adultTotal = +adult1 + +adult2;
childTotal = +child1;
document.getElementById("adultTotal").value = adultTotal;
document.getElementById("childTotal").value = childTotal;
break;
}
case '6': {
adultTotal = +adult1 + +adult2;
childTotal = +child1 + +child2;
document.getElementById("adultTotal").value = adultTotal;
document.getElementById("childTotal").value = childTotal;
break;
}
case '7': {
adultTotal = +adult1 + +adult2;
childTotal = +child1 + +child2 + +child3;
document.getElementById("adultTotal").value = adultTotal;
document.getElementById("childTotal").value = childTotal;
break;
}
case '8': {
adultTotal = +adult1 + +adult2 + +adult3;
childTotal = +child1;
document.getElementById("adultTotal").value = adultTotal;
document.getElementById("childTotal").value = childTotal;
break;
}
case '9': {
adultTotal = +adult1 + +adult2 + +adult3;
childTotal = +child1 + +child2;
document.getElementById("adultTotal").value = adultTotal;
document.getElementById("childTotal").value = childTotal;
break;
}
}
totalFare = +adultTotal + +childTotal;
document.getElementById("totalFare").value = totalFare;
}
這是你的實際邏輯嗎?我問第一個'switch'是完全多餘的,只需使用'return this.value' - 事實上,所有的switch語句看起來相當冗餘。這段代碼究竟應該做什麼?這將有助於看到一個工作示例,或者至少可以看到您的HTML。 –
第一個switch語句在每種情況下都有一些其他語句,我現在隱藏了這些語句以減少代碼。 –
請顯示您的實際代碼。這種減少的樣本幾乎沒有意義,似乎只是提出更多的問題。 –