2017-07-13 8 views
-1

私はJavaスクリプトの初心者です。ちょっとしたボットチャットをしていました。しかし、私は配列の中の値と一致する何かを入力するとifとelseの条件を実行するという問題に悩まされています。私のelse条件はなぜ実行されていますか?

function readInput(){ 
 
var words = ["hello", "hi", "holis", "holus"]; 
 
var userInput = document.getElementById("userInput").value.toLowerCase(); 
 
console.log(" Users says: " + userInput); 
 

 
for(var i = 0; i < words.length; i++){ 
 
    if(userInput == words[i]){ 
 
     console.log("bot says: " + "hi!"); 
 

 
    }else { 
 
     console.log("bot says " + "i dont understand"); 
 
    } 
 
    } 
 
    //clean user input 
 
    var clearInput = document.getElementById("userInput").value=""; 
 
}
<input type="text" id="userInput" value=""> 
 

 
    <button type="button" name="button" onclick="readInput()">Say</button>

すべてのヘルプは声明のためにあなたを変更

+0

それぞれのインデックスをチェックしていて、そのインデックスが他のものに行くよりも一致しないためです。それらのすべてが一致しないときにだけそれに入ることを期待しているので、あなたのロジックを変更する必要があります。 – epascarello

+0

あなたは一致がある前に、そして/または後に配列をチェックし続けます。あなたは*すべての*単語をチェックして、*一致するものがあなたの状態であるかどうかを確認する必要があります。それを行うには多くの方法があります。 –

+0

完全に修正した 'if(words.includes(userInput))' – 4castle

答えて

0

をapreciatedされます。

スクリプトが単語を認識しているかどうかを確認する変数を定義します。 for文では、入力語がwordsにある場合は、変数trueを設定してからブレークします。最後に、チェック変数が偽であれば、私は理解できないと言うよりも:

var check = false 
for (var i = 0; i < words.length; i++) { 
    if (userInput == words[i]) { 
     console.log("bot says: " + "hi!"); 
     check = true; 
     break 
    } 
} 
if (!check) { 
    console.log("bot says " + "i dont understand"); 
} 
関連する問題