-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>
すべてのヘルプは声明のためにあなたを変更
それぞれのインデックスをチェックしていて、そのインデックスが他のものに行くよりも一致しないためです。それらのすべてが一致しないときにだけそれに入ることを期待しているので、あなたのロジックを変更する必要があります。 – epascarello
あなたは一致がある前に、そして/または後に配列をチェックし続けます。あなたは*すべての*単語をチェックして、*一致するものがあなたの状態であるかどうかを確認する必要があります。それを行うには多くの方法があります。 –
完全に修正した 'if(words.includes(userInput))' – 4castle