我想要做的是有一个下拉菜单,在这种情况下选择一个选项,我想要2瓶jwWhisky。我希望它然后转到js并让开关盒输入瓶子的价格并将其乘以我想要的瓶子。
HTML:
function calculate() {
"use strict"
var myBox1 = document.getElementById('drinks1Num').value;
var myBox2 = document.getElementById('drinks1Type').value;
var result = document.getElementById('result');
var myResult = myBox1 * myBox2;
var inputCost = 0;
switch (myBox2) {
case 'jwWhisky':
inputCost = 49;
break
//default:
// alert ("You haven't coded this yet");
}
result.value = myResult;
}

<legend>
Sprits Option
</legend>
<select id="drinks1Num" onchange="calculate()">
<option value="0">--- Select ---</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<select id="drinks1Type" onchange="calculate()">
<option value="0">--- Select ---</option>
<option disabled="disabled"></option>
<optgroup label="whisky">
<option value="jwWhisky">Johnnie Walker 700ml</option>49$
</optgroup>
</select>
<input id="result" />
&#13;
答案 0 :(得分:1)
您只需将myBox1 * inputCost
的计算移至切换后:
function calculate() {
"use strict"
var myBox1 = document.getElementById('drinks1Num').value;
var myBox2 = document.getElementById('drinks1Type').value;
var result = document.getElementById('result');
var inputCost=0;
switch (myBox2) {
case 'jwWhisky':
inputCost=49;
break
//default:
// alert ("You haven't coded this yet");
}
result.value = myBox1 * inputCost;
}
<select id="drinks1Num" onchange="calculate()">
<option value="0">--- Select ---</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<select id="drinks1Type" onchange="calculate()">
<option value="0">--- Select ---</option>
<option disabled="disabled"></option>
<optgroup label="whisky">
<option value="jwWhisky">Johnnie Walker 700ml</option>49$
</optgroup>
</select>
<input id="result" "/>
(另外,正如您所看到的,您根本不需要myResult
变量。)
请注意,将价格作为data-
属性存储在每个选项元素上可能更好,因为这会将产品信息保存在HTML中的一个位置,您不需要JS开关声明。 编辑 - 使用一个或多个data-
属性,您可以添加其他信息,这些信息不会随表单一起提交,但可用于JS中的计算,value
属性仍可用于产品代码(并将提交)。也许是这样的:
function calculate() {
"use strict";
var num = document.getElementById('drinks1Num').value;
var drinkType = document.getElementById('drinks1Type');
var unitCost = drinkType.options[drinkType.selectedIndex].getAttribute('data-cost');
document.getElementById('result').value = num * unitCost;
}
<select id="drinks1Num" onchange="calculate()">
<option value="0">--- Select ---</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<select id="drinks1Type" onchange="calculate()">
<option value="0">--- Select ---</option>
<option disabled="disabled"></option>
<optgroup label="whisky">
<option value="jwWhisky" data-cost="49">Johnnie Walker 700ml ($49)</option>
<option value="something" data-cost="22">Something else ($22)</option>
</optgroup>
</select>
<input id="result" "/>
(另请注意,在原始HTML中,您在结束49$
标记后有</option>
,所以在我的回答的第二个版本中,我已将其移至选项元素的文本。)