2012-10-05 48 views
0

我的網頁上的其他所有內容都可以正常工作。警報(userinput.value);完美的作品......但是這些陳述並沒有調用按鈕。該代碼只返回else語句中的有效命令。If-else語句不工作,想要忽略JavaScript中的Case

 function btn_go_click(){ 
      var userinput = document.getElementById("txtcommand"); 
      alert(userinput.value);   
      if (userinput.value === ("N" || "North")){ 
       btn_North_click();     
      }else if (userinput.value === ("E" || "East")){ 
       btn_East_click(); 
      }else if (userinput.value === ("S" || "South")){ 
       btn_South_click(); 
      }else if (userinput.value === ("W" || "West")){ 
       btn_West_click();      
      }else{ 
      UpdateText ("Valid commands are \"n\", \"e\", \"s\", \"w\"");     
      } 
     } 

回答

6

("N" || "North")結果將永遠是"N"

所以if (userinput.value === ("N" || "North"))只是相同

if (userinput.value === "N"),你需要寫:

if (userinput.value === "N" || userinput.value === "North") 

或者你可以寫像下面(忽略大小寫):

if (['n', 'north'].indexOf(userinput.value.toLowerCase()) > -1) { 

} // ... and so on 
0

如果您想忽略這種情況,最簡單的方法就是將所有內容都放在大寫字母上。

val valueToCompare = userinput.value.toUpperCase(); 

然後,只需使用您的大寫字母(而不是「北」「北」)的所有值,你甚至不會去關心用戶輸入的外殼。

你的ifs壞了。這裏是你的代碼固定:

function btn_go_click(){ 
    var userinput = document.getElementById("txtcommand").value.toUpperCase(); 
    alert(userinput.value);   
    if (userinput === "N" || userinput === "NORTH") { 
     btn_North_click();     
    } else if (userinput === "E" || userinput === "EAST") { 
     btn_East_click(); 
    } else if (userinput === "S" || userinput === "SOUTH") { 
     btn_South_click(); 
    } else if (userinput === "W" || userinput === "WEST") { 
     btn_West_click();      
    } else { 
     UpdateText ("Valid commands are \"n\", \"e\", \"s\", \"w\""); 
    } 
} 
0

如果你想忽略的情況下,您可以轉換一切大寫或小寫,或使用正則表達式忽略大小寫,如

function btn_go_click(){ 
    var userinput = document.getElementById("txtcommand"); 
    var value = userinput.value.toLowerCase(); 

    if (value == "n" || value == "north") 

var reN = /^(n|north)$/i; 

    if (reN.test(value)) 

您可能要修剪開頭和結尾的從輸入空間也因此匹配改善。

0

我知道這應該是一個評論,它是太長,發表評論。

如果您正在製作冒險遊戲,那麼您最好製作一個「命令列表」,而不是試圖做出很大的「如果」。

對於實例

var cmds = [ 
    { 
    keywords: ["n", "north"], 
    help: "Move north, if you can.", 
    func: move_north 
    }, 
    { 
    keywords: ["get", "take"], 
    help: "take an object.", 
    func: get_object 
    } 
]; 

這種做法也爲您提供了內置的命令列表和幫助文件。

另外,我喜歡讓命令解析器採用3個字母的快捷方式,所以我不必輸入整個單詞。然而,這只是結冰。