-1

我正在尝试使用 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>
4

2 回答 2

1

好吧,我不确定所有的仇恨来自哪里。但是,您有一系列问题。

  1. document.writeln 在 javascript 中从来都不是很好。它会覆盖文档。这意味着您的选择框将消失。
  2. 你一定有一个错字,因为你的字符串比较只是愚蠢的。但是,使用 === 做得很好
  3. 内联方法处理程序,onchange="choices(this.value);"并不是最糟糕的事情。但应该避免它们。使用 javascript,您可以更轻松地处理浏览器之间的不同怪癖。
  4. 现代浏览器将具有调试此代码的方法。Firebug for firefox、Internet Explorer 中的 F12 (PC) 和 webkit 浏览器中的调试控制台。这些将告诉您行号,并允许您以致命的精度查明问题。
  5. 您当前正在内联处理程序中发送选择的值,所以我猜就使用它。
  6. 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;
     }
}

例子

于 2012-04-24T02:28:18.660 回答
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>并在页面上的某处添加。

于 2012-04-24T02:23:11.223 回答