2016-10-15 5 views
0

Так что я совершенно нул для всего этого кодирования, и, пройдя некоторую подготовку и узнав JavaScript, Html и CSS, я поставил перед собой задачу. Это значит, что Batcomputer/Jarvis управляет моей программой Google, играми, программами и т. Д. Но для этого мне нужно выполнить поиск текстового ввода html для слов, чтобы затем запустить соответствующую функцию.html текст, чтобы выбрать функцию JavaScript

Вот часть кода, которые имеют значение:

<input type="text" id="inputField" onchange="insertInput()"></input> 

<script> 
var currentInput = 1; 
//The input and function picker 
function insertInput() { 
    document.getElementById("inputHtml").innerHTML = currentInput; 
    console.log(currentInput); 
    var containsLaunchGame = /launch game/g; 
    var resultLaunchGame = currentInput.test(containsLaunchGame); 
    console.log(resultLaunchGame); 

    if (resultLaunchGame = true) { 
    scanGames(); 
    console.log("I found Launch Game"); 
    }; 
}; 
</script> 

Это не весь код, но только часть из них у меня есть вопросы. Кроме простого string.test Я также попробовал string.search и несколько других, но никто не работает так, как я их хочу.

Что я собираюсь (на самом деле не имеет значения, как), так это то, что я могу сказать, что мой компьютер что-то делает, основываясь на том, что я набираю. Но все пути, которые я пробовал, приводят к ошибке.

Для кода, приведенного выше, это сообщение "Uncaught TypeError: currentInput.test не является функцией".

Если у вас есть какой-либо способ исправить это, независимо от того, как, тогда я был бы признателен за это!

метод

ответ

0

В коде есть довольно много синтаксических ошибок. Пожалуйста, ознакомьтесь со встроенными комментариями для исправлений. Вы должны взглянуть на консоль вашего браузера. С помощью инструментов Chrome dev у нас есть очень мощные инструменты для отладки.

var currentInput = 1; 
 

 
function insertInput() { 
 
    // assigning current input was backwards, and you should use `value` for inputs 
 
    currentInput = document.getElementById("inputField").value; 
 
    console.log(currentInput); 
 
    var containsLaunchGame = /launch game/g; 
 
    // the regex test is also backwards. test is a method on a regex not a string 
 
    var resultLaunchGame = containsLaunchGame.test(currentInput); 
 
    console.log(resultLaunchGame); 
 
    // in the if statement you were using a single equals, which is the 
 
    // assignment operator, == or === test for equality 
 
    if (resultLaunchGame === true) { 
 
    // scanGames(); 
 
    console.log("I found Launch Game"); 
 
    }; 
 
};
<input type="text" id="inputField" onchange="insertInput()" />

0

Тест принадлежит к объекту RegExp и принимает строку испытываться, как парам ...

попробовать:

containsLaunchGame.test(currentInput); 
0

.test не является функцией string, но Regexp вместо этого.

Так используйте

var resultLaunchGame = containsLaunchGame.test(currentInput); 

Кроме того, в лог консоли показывает "I found Launch Game" с прописными буквами, а ваш регулярное выражение /launch game/g не составляет для него. Если вы хотите быть нечувствительным к регистру, используйте вместо этого /launch game/gi.

1

То, что вы вызываете с помощью «currentInput.test (containsLaunchGame)»; часть - фактически var currentInput = 1; => 1.Test()

Заменить эту строку:

document.getElementById("inputHtml").innerHTML = currentInput; 

с:

currentInput = document.getElementById("inputHtml").innerHTML; 

После этого заменить

var resultLaunchGame = currentInput.string.indexOf(containsLaunchGame) !== -1; 
console.log(resultLaunchGame); 

if (resultLaunchGame = true) { 

с

var resultLaunchGame = currentInput.test(containsLaunchGame); 
console.log(resultLaunchGame); 

if (resultLaunchGame == true) { 
0

currentInput это число, а не строка, так что вы не можете использовать строковые методы, как .search

Попробуйте сделать currentInput строку и использовать .search метод

Кроме того, ваш пример не включал элемент с идентификатором «inputHtml».

вместо onchange попробовать использовать oninput как onchange не появляется огонь каждый раз, когда клавиша нажата, только на размытость

примере 1 добавления innerHtml элемент

var currentInput = '1'; 
 
    //The input and function picker 
 
    document.getElementById('inputField').oninput = insertInput; 
 

 
    function insertInput() { 
 
     document.getElementById("inputHtml").innerHTML = currentInput; 
 
     console.log(currentInput); 
 
     var containsLaunchGame = /launch game/g; 
 
     var resultLaunchGame = currentInput.search(containsLaunchGame); 
 
     console.log(resultLaunchGame); 
 

 
     if (resultLaunchGame === 0) { 
 
     //scanGames(); 
 
     console.log("I found Launch Game"); 
 
     } 
 
    }
<div id="inputHtml"> 
 
    </div> 
 
    <input type="text" id="inputField" />

Пример 2 при условии, что вы хотите использовать document.getElementById("inputText") вместо document.getElementById("inputHtml")

//The input and function picker 
 
    document.getElementById('inputField').oninput = insertInput; 
 

 
    function insertInput() { 
 
     currentInput = document.getElementById("inputField").value 
 
     console.log(currentInput); 
 
     var containsLaunchGame = /launch game/g; 
 
     var resultLaunchGame = currentInput.search(containsLaunchGame); 
 
     console.log(resultLaunchGame); 
 

 
     if (resultLaunchGame === 0) { 
 
     //scanGames(); 
 
     console.log("I found Launch Game"); 
 
     } 
 
    }
<input type="text" id="inputField" />

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