2012-04-24 214 views
-1

我試圖使用if ... else語句並通過數組元素的值將值分配給變量stateCode。有些東西可能無法正常工作。 下面的代碼:if ... else語句和數組

<!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> 
+5

我懷疑字符串' 「X」'會永遠等於字符串'「或」「。 .. – deceze 2012-04-24 02:21:49

+1

也許你打算寫'if(stateCode ===「OR」)'&c。 – 2012-04-24 02:23:12

+2

';'也是'new Array(10; 7.5; 3.2)'中的語法錯誤。這些應該是逗號,並且確實應該使用數組文字符號:'[10,7.5,3.2]'。 – 2012-04-24 02:24:16

回答

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

用'new Array(10,7.5,3)替換'new Array(10; 7.5; 3.2);'2);' – Robin 2012-04-24 02:25:55

+0

@Robin'[10,7.5,3.2]'更好。它更簡潔,'新的Array()'的參數充其量是令人困惑的。 – 2012-04-24 02:27:49

+0

我試過了,但還沒有工作 – 2012-04-24 02:32:40

1

嗯,我不確定所有仇恨來自哪裏。但是,你有一些問題。

  1. document.writeln從來沒有好的JavaScript。它會覆蓋文檔。意思是你的選擇框會消失。
  2. 你必須有一個錯字,因爲你的字符串比較是愚蠢的。但是,使用===
  3. 內聯方法處理程序,onchange="choices(this.value);",並不是最糟糕的事情。但他們應該避免。使用JavaScript,您可以更輕鬆地處理瀏覽器之間的不同怪癖。
  4. 現代瀏覽器將有調試此代碼的方法。 Firefox中的Firebug,Internet Explorer中的F12(PC)以及Webkit瀏覽器中的調試控制檯。這些將會告訴你行號,並且讓你能夠精確地查明問題。
  5. 您目前正在發送內聯處理程序中select的值,所以只是使用我的猜測。
  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; 
    } 
} 

Example