我正在尝试使用if ... else语句,并通过数组元素的值为变量stateCode赋值。有些东西不起作用,也许阵列不正确。 这是代码:
<!DOCTYPE html>
<html>
<head>
<title>if...else</title>
<script type="text/javascript">
function choices() {
var stateCode = document.getElementById("x").value;
var taxes = new Array(10; 7.5; 3.2);
if ("x" === "OR") {
document.writeln(taxes[0]);
} else if ("x" === "CA") {
document.writeln(taxes[1]);
} else if ("x" === "MO") {
document.writeln(taxes[2]);
}
}
</script>
</head>
<body>
<p>
<select id="x" onchange="choices(this.value);">
<option value = "">---Reset---</option>
<option value = "MO">MO</option>
<option value = "OR">OR</option>
<option value = "CA">CA</option>
</select>
</p>
</body>
</html>
答案 0 :(得分:1)
if ("x" === "OR") {
document.writeln(taxes[0]);
} else if ("x" === "CA") {
document.writeln(taxes[1]);
} else if ("x" === "MO") {
将"x"
替换为stateCode
,然后重试
并将var taxes = new Array(10; 7.5; 3.2);
替换为:
var taxes = new Array(10, 7.5, 3.2);
应该有效,对我有用。
那怎么样:用这个替换你的整个功能:
function choices() {
var stateCode = document.getElementById("x");
var taxes = new Array(10, 7.5, 3.2);
if (stateCode.value != "") {
document.getElementById("taxes").innerHTML = taxes[stateCode.selectedIndex - 1];
}
}
并在页面的某处添加<div id="taxes"></div>
。
答案 1 :(得分:1)
好吧,我不确定所有的仇恨来自哪里。但是,你有一些问题。
onchange="choices(this.value);"
并不是最糟糕的事情。但是应该避免它们。使用javascript,您可以更轻松地处理浏览器之间的不同怪癖。new Array
语法很麻烦。我避免使用括号[10, 3.2, 3]
。<小时/> 至于你的问题:
添加HTML
<div id="results"></div>
...
function choices(stateCode) {
var results = document.getElementById("results");
var taxes = [10, 7.5, 3.2];
switch(stateCode) {
case "OR":
results.innerHTML = taxes[0];
break;
case "CA":
results.innerHTML = taxes[1];
break;
case "MO":
results.innerHTML = taxes[2];
break;
default:
results.innerHTML = "No tax records for entry: " + stateCode;
break;
}
}