我编写了一个单例,将一个事件附加onchange
到每个表单元素并在更改时更新 this.data 值。通过查看您的代码和您的 jsfiddle(这对我不起作用),这种方法可能没有多大意义。我已经在我的本地机器上测试过了,它可以工作
<script>
var quoteMaker = {
data : {
'services':null,
'bedrooms':null,
'furnishing':null,
'quoteString':''
},
servicesListener : function(){
this.data.services = document.getElementById('service').options[document.getElementById('service').selectedIndex].text;
},
bedroomsListener : function(){
this.data.bedrooms = document.getElementById('bedrooms').options[document.getElementById('bedrooms').selectedIndex].text;
},
furnishingListener : function(){
this.data.furnishing = document.getElementById('furnishing').options[document.getElementById('furnishing').selectedIndex].text;
},
changeData : function(divObj){
this.data.quoteString='';
if( divObj.id == 'service' ){
this.servicesListener();
}else if( divObj.id == 'bedrooms' ){
this.bedroomsListener();
}else if( divObj.id == 'furnishing' ){
this.furnishingListener();
}
this.updateQuote();
},
updateQuote : function() {
if (this.data.services == "Inventory" &&this.data.bedrooms =="1" && this.data.furnishing == "Furnished")
this.data.quoteString = "£70";
if (this.data.services == "Inventory" &&this.data.bedrooms =="2" && this.data.furnishing == "Furnished")
this.data.quoteString = "£75";
if (this.data.services == "Inventory" &&this.data.bedrooms =="3" && this.data.furnishing == "Furnished")
this.data.quoteString = "£80";
if (this.data.services == "Inventory" &&this.data.bedrooms =="4" && this.data.furnishing == "Furnished")
this.data.quoteString = "£85";
if (this.data.services == "Inventory" &&this.data.bedrooms =="5" && this.data.furnishing == "Furnished")
this.data.quoteString = "£90";
if (this.data.services == "Inventory" &&this.data.bedrooms =="6+" && this.data.furnishing == "Furnished")
this.data.quoteString = "£100";
if (this.data.services == "Inventory" &&this.data.bedrooms =="1" && this.data.furnishing == "Part Furnished")
this.data.quoteString = "£60";
if (this.data.services == "Inventory" &&this.data.bedrooms =="2" && this.data.furnishing == "Part Furnished")
this.data.quoteString = "£65";
if (this.data.services == "Inventory" &&this.data.bedrooms =="3" && this.data.furnishing == "Part Furnished")
this.data.quoteString = "£70";
if (this.data.services == "Inventory" &&this.data.bedrooms =="4" && this.data.furnishing == "Part Furnished")
this.data.quoteString = "£75";
if (this.data.services == "Inventory" &&this.data.bedrooms =="5" && this.data.furnishing == "Part Furnished")
this.data.quoteString = "£80";
if (this.data.services == "Inventory" &&this.data.bedrooms =="6+" && this.data.furnishing == "Part Furnished")
this.data.quoteString = "£85";
if (this.data.services == "Inventory" &&this.data.bedrooms =="1" && this.data.furnishing == "Unfurnished (except for white goods)")
this.data.quoteString = "£55";
if (this.data.services == "Inventory" &&this.data.bedrooms =="2" && this.data.furnishing == "Unfurnished (except for white goods)")
this.data.quoteString = "£60";
if (this.data.services == "Inventory" &&this.data.bedrooms =="3" && this.data.furnishing == "Unfurnished (except for white goods)")
this.data.quoteString = "£65";
if (this.data.services == "Inventory" &&this.data.bedrooms =="4" && this.data.furnishing == "Unfurnished (except for white goods)")
this.data.quoteString = "£70";
if (this.data.services == "Inventory" &&this.data.bedrooms =="5" && this.data.furnishing == "Unfurnished (except for white goods)")
this.data.quoteString = "£75";
if (this.data.services == "Inventory" &&this.data.bedrooms =="6+" && this.data.furnishing == "Unfurnished (except for white goods)")
this.data.quoteString = "£80";
if (this.data.services == "Check-In" &&this.data.bedrooms =="1" && this.data.furnishing == "Furnished")
this.data.quoteString = "£50";
if (this.data.services == "Check-In" &&this.data.bedrooms =="2" && this.data.furnishing == "Furnished")
this.data.quoteString = "£55";
if (this.data.services == "Check-In" &&this.data.bedrooms =="3" && this.data.furnishing == "Furnished")
this.data.quoteString = "£60";
if (this.data.services == "Check-In" &&this.data.bedrooms =="4" && this.data.furnishing == "Furnished")
this.data.quoteString = "£65";
if (this.data.services == "Check-In" &&this.data.bedrooms =="5" && this.data.furnishing == "Furnished")
this.data.quoteString = "£70";
if (this.data.services == "Check-In" &&this.data.bedrooms =="6+" && this.data.furnishing == "Furnished")
this.data.quoteString = "£75";
if (this.data.services == "Check-In" &&this.data.bedrooms =="1" && this.data.furnishing == "Part Furnished")
this.data.quoteString = "£40";
if (this.data.services == "Check-In" &&this.data.bedrooms =="2" && this.data.furnishing == "Part Furnished")
this.data.quoteString = "£45";
if (this.data.services == "Check-In" &&this.data.bedrooms =="3" && this.data.furnishing == "Part Furnished")
this.data.quoteString = "£50";
if (this.data.services == "Check-In" &&this.data.bedrooms =="4" && this.data.furnishing == "Part Furnished")
this.data.quoteString = "£55";
if (this.data.services == "Check-In" &&this.data.bedrooms =="5" && this.data.furnishing == "Part Furnished")
this.data.quoteString = "£60";
if (this.data.services == "Check-In" &&this.data.bedrooms =="6+" && this.data.furnishing == "Part Furnished")
this.data.quoteString = "£65";
if (this.data.services == "Check-In" &&this.data.bedrooms =="1" && this.data.furnishing == "Unfurnished (except for white goods)")
this.data.quoteString = "£35";
if (this.data.services == "Check-In" &&this.data.bedrooms =="2" && this.data.furnishing == "Unfurnished (except for white goods)")
this.data.quoteString = "£40";
if (this.data.services == "Check-In" &&this.data.bedrooms =="3" && this.data.furnishing == "Unfurnished (except for white goods)")
this.data.quoteString = "£45";
if (this.data.services == "Check-In" &&this.data.bedrooms =="4" && this.data.furnishing == "Unfurnished (except for white goods)")
this.data.quoteString = "£50";
if (this.data.services == "Check-In" &&this.data.bedrooms =="5" && this.data.furnishing == "Unfurnished (except for white goods)")
this.data.quoteString = "£55";
if (this.data.services == "Check-In" &&this.data.bedrooms =="6+" && this.data.furnishing == "Unfurnished (except for white goods)")
this.data.quoteString = "£60";
if (this.data.services == "Check-Out" &&this.data.bedrooms =="1" && this.data.furnishing == "Furnished")
this.data.quoteString = "£55";
if (this.data.services == "Check-Out" &&this.data.bedrooms =="2" && this.data.furnishing == "Furnished")
this.data.quoteString = "£60";
if (this.data.services == "Check-Out" &&this.data.bedrooms =="3" && this.data.furnishing == "Furnished")
this.data.quoteString = "£65";
if (this.data.services == "Check-Out" &&this.data.bedrooms =="4" && this.data.furnishing == "Furnished")
this.data.quoteString = "£70";
if (this.data.services == "Check-Out" &&this.data.bedrooms =="5" && this.data.furnishing == "Furnished")
this.data.quoteString = "£75";
if (this.data.services == "Check-Out" &&this.data.bedrooms =="6+" && this.data.furnishing == "Furnished")
this.data.quoteString = "£80";
if (this.data.services == "Check-Out" &&this.data.bedrooms =="1" && this.data.furnishing == "Part Furnished")
this.data.quoteString = "£45";
if (this.data.services == "Check-Out" &&this.data.bedrooms =="2" && this.data.furnishing == "Part Furnished")
this.data.quoteString = "£50";
if (this.data.services == "Check-Out" &&this.data.bedrooms =="3" && this.data.furnishing == "Part Furnished")
this.data.quoteString = "£55";
if (this.data.services == "Check-Out" &&this.data.bedrooms =="4" && this.data.furnishing == "Part Furnished")
this.data.quoteString = "£60";
if (this.data.services == "Check-Out" &&this.data.bedrooms =="5" && this.data.furnishing == "Part Furnished")
this.data.quoteString = "£65";
if (this.data.services == "Check-Out" &&this.data.bedrooms =="6+" && this.data.furnishing == "Part Furnished")
this.data.quoteString = "£70";
if (this.data.services == "Check-Out" &&this.data.bedrooms =="1" && this.data.furnishing == "Unfurnished (except for white goods)")
this.data.quoteString = "£40";
if (this.data.services == "Check-Out" &&this.data.bedrooms =="2" && this.data.furnishing == "Unfurnished (except for white goods)")
this.data.quoteString = "£45";
if (this.data.services == "Check-Out" &&this.data.bedrooms =="3" && this.data.furnishing == "Unfurnished (except for white goods)")
this.data.quoteString = "£50";
if (this.data.services == "Check-Out" &&this.data.bedrooms =="4" && this.data.furnishing == "Unfurnished (except for white goods)")
this.data.quoteString = "£55";
if (this.data.services == "Check-Out" &&this.data.bedrooms =="5" && this.data.furnishing == "Unfurnished (except for white goods)")
this.data.quoteString = "£60";
if (this.data.services == "Check-Out" &&this.data.bedrooms =="6+" && this.data.furnishing == "Unfurnished (except for white goods)")
this.data.quoteString = "£65";
document.getElementById("quote").innerHTML=this.data.quoteString;
},
init: function(){
}
}
quoteMaker.init();
</script>
<div id="form">
<p class="lead">Complete the form for an instant quote</p>
<form name="quote-maker" action="">
<p>Select service<br />
<select id="service" name="services" onchange="quoteMaker.changeData(this);">
<option value="Inventory">Inventory</option>
<option value="Check-In">Check-In</option>
<option value="Check-Out">Check-Out</option>
</select></p>
<p class="lead">How many bedrooms does the property have?<br />
<select id="bedrooms" name="bedrooms" onchange="quoteMaker.changeData(this);">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="5">6+</option>
</select></p>
<p class="lead">Is the property furnished or unfurnished?<br />
<select id="furnishing" name="furnishing" onchange="quoteMaker.changeData(this);">
<option value="1">Furnished</option>
<option value="2">Part Furnished </option>
<option value="3">Unfurnished (except for white goods)</option>
</select></p>
</form>
</div>
<div id="quote"></div>
注意:我清理了你的 html。将所有输入包装<select>
在一个表单中