Javascript 如果else语句和数组

Javascript 如果else语句和数组,javascript,Javascript,我想用一个if。。。else语句,并通过数组元素的值为变量stateCode赋值。有些东西不工作,可能是阵列不正确。 代码如下: <!DOCTYPE html> <html> <head> <title>if...else</title> <script type="text/javascript"> function choices() { var stateCode = document.getElemen

我想用一个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>
将x替换为stateCode,然后重试

并替换var税=新阵列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];
    }
}

然后在页面的某个地方添加一个。

嗯,我不确定所有的仇恨都来自哪里。然而,你有很多问题

document.writeln在javascript中永远不好用。它会覆盖文档。这意味着您的选择框将消失。 你一定是打错了,因为你的字符串比较太傻了。但是,使用=== 内联方法处理程序,onchange=choicethis.value;,这不是最糟糕的事情。但它们应该避免。使用javascript,您可以更轻松地处理浏览器之间的不同怪癖。 现代浏览器将具有调试此代码的方法。firefox的Firebug、internet explorer中的F12 PC和webkit浏览器中的调试控制台。这些将告诉你行号,并允许你以致命的精确度查明问题。 您当前正在内联处理程序中发送select的值,所以我猜只需使用它即可。 新的数组语法很麻烦。我避免使用括号[10,3.2,3]。 关于你的问题:

添加HTML

<div id="results"></div>

我怀疑字符串x是否会等于字符串,或者……也许你是想写if stateCode===或&c。;也是新数组10中的语法错误;7.5; 3.2. 这些应该是逗号,实际上,您还应该使用数组文字表示法:[10,7.5,3.2].aaaaaaa并且如果任何document.write调用执行,它将完全覆盖DOM中的内容。将下拉列表的值传递给choices,但忽略函数中的参数;为什么?您应该真正开始熟悉浏览器的开发工具pronto.并更换新的Array10;7.5; 3.2; 新阵列10,7.5,3.2@罗宾[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="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;
     }
}