0

私のページの他のすべては完全に機能します。alert(userinput.value); 完全に機能します...しかし、ステートメントはボタンを呼び出しません。このコードは、elseステートメントで有効なコマンドのみを返します。

      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\"");                   
          }
       }
4

4 に答える 4

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
于 2012-10-05T01:56:38.573 に答える
0

大文字と小文字を無視したい場合、最も簡単な方法はすべて大文字にすることです。

val valueToCompare = userinput.value.toUpperCase();

次に、すべての値を大文字(「North」ではなく「NORTH」)で使用するだけで、ユーザー入力の大文字小文字を気にする必要がなくなります。

あなたのifは壊れています。修正されたコードは次のとおりです。

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\"");
    }
}
于 2012-10-05T02:00:09.050 に答える
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))

マッチングが改善されるように、入力から先頭と末尾のスペースも削除することをお勧めします。

于 2012-10-05T02:03:10.560 に答える
0

これがコメントであることはわかっていますが、コメントするには長すぎます。

もしあなたがアドベンチャーゲームを作っているなら、if-thenを大きくしようとするよりも、「コマンドリスト」を作ったほうがいいでしょう。

インスタンスについて

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 文字のショートカットを取得するので、単語全体を入力する必要がありません。ただし、それは単なるアイシングです。

于 2012-10-05T02:13:24.217 に答える