2017-01-17 3 views
1

Я пытаюсь сопоставить введенный текст со списком слов из заранее определенного массива. Однако он ничего не возвращает, даже console.log ничего не возвращает. Я не могу понять, почему цикл out не запускается. Любая помощь будет принята с благодарностью.Мои вложенные циклы не работают

var actions = ["north", "south", "east", "west", "up", "down", "get", "take", "pick up", "use", "drop", "open", "close"]; 
 
var inputTextBox = document.getElementById("inputTextBox"); 
 

 
inputTextBox.addEventListener("keypress", function(event) { 
 
    var stringArray = []; 
 
    var x = event.which || event.keyCode; 
 
    var inString = inputTextBox.value.toLowerCase(); 
 

 
    if (x === 13) { 
 
     stringArray = inString.split(" "); 
 
     console.log("stringArray is --- " + stringArray + " --- length is " + stringArray.length); 
 
     for (var i = 0; i < stringArray; i++) { 
 
      console.log("outer loop is " + stringArray[i]); 
 
      for (var j = 0; j < actions.length; j++) { 
 
       if (stringArray[i] === actions[j]) { 
 
        console.log(stringArray[i]); 
 
       } 
 
      } 
 
     } 
 
    } 
 
}
<input id="inputTextBox" type="text" maxlength="200" placeholder="words here" autofocus></input>

ответ

3

Вы забыли использовать length свойство, поскольку stringArray является массивом, и вы должны повторять его, используя его length.

for (var i = 0; i < stringArray.length; i++) { 
................................^^^^ 

"Тем не менее, это ничего не возвращаются, даже console.log не возврата ничего."

Для просмотра изменений вам необходимо нажать enter.

var x = event.which || event.keyCode; 

event.which свойство указывает конкретный ключ или кнопку, которая была нажата и 13 является ключом для enter команды.

var actions = ["north", "south", "east", "west", "up", "down", "get", "take", "pick up", "use", "drop", "open", "close"]; 
 
var inputTextBox = document.getElementById("inputTextBox"); 
 

 
inputTextBox.addEventListener("keypress", function(event) { 
 
\t var stringArray = []; 
 
\t var x = event.which || event.keyCode; 
 
\t var inString = inputTextBox.value.toLowerCase(); 
 
\t 
 

 
\t if (x === 13) { 
 
\t stringArray = inString.split(" "); 
 
\t console.log("stringArray is --- " + stringArray + " --- length is " + stringArray.length); 
 
\t \t for (var i = 0; i < stringArray.length; i++) { 
 
\t \t \t console.log("outer loop is " + stringArray[i]); 
 
\t \t \t for (var j = 0; j < actions.length; j++) { 
 
\t \t \t \t if (stringArray[i] === actions[j]) { 
 
\t \t \t \t \t console.log(stringArray[i]); 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t } 
 
\t } 
 

 
});
<input id="inputTextBox" type="text" maxlength="200" placeholder="words here" autofocus></input>

1

В своем первом forloop, вместо того, чтобы я < StringArray попробовать это, я < stringArray.length

for (var i = 0; i < stringArray.length; i++) { 
     console.log("outer loop is " + stringArray[i]); 
     for (var j = 0; j < actions.length; j++) { 
      if (stringArray[i] === actions[j]) { 
       console.log(stringArray[i]); 
      } 
     } 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^