2012-10-05 95 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个字母的快捷方式,所以我不必输入整个单词。然而,这只是结冰。