【问题标题】:html text to select a JavaScript functionhtml 文本以选择 JavaScript 函数
【发布时间】:2016-10-15 14:00:48
【问题描述】:

所以我对整个编码工作相当陌生,在接受了一些培训并了解了 JavaScript、Html 和 CSS 之后,我给自己设定了一个挑战。这是为了制作一个 Batcomputer/Jarvis 来管理我的谷歌议程、游戏、程序等等。但为此,我需要在 html 文本输入中搜索单词,然后启动相应的函数。

以下是重要的代码部分:

<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 is not a function”。

如果您有任何解决此问题的方法,无论如何,我将不胜感激!

【问题讨论】:

    标签: javascript html search text input


    【解决方案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) {
    

    【讨论】:

      【解决方案2】:

      您的代码中有很多语法错误。请参阅内联 cmets 进行修复。你应该看看你的浏览器控制台。借助 Chrome 开发工具,我们可以使用非常强大的调试工具。

      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");
        };
      };
      &lt;input type="text" id="inputField" onchange="insertInput()" /&gt;

      【讨论】:

        【解决方案3】:

        测试方法属于RegExp对象,接受要测试的字符串作为参数...

        尝试:

        containsLaunchGame.test(currentInput);
        

        【讨论】:

          【解决方案4】:

          .test 不是string 的函数,而是Regexp

          所以用

          var resultLaunchGame = containsLaunchGame.test(currentInput);
          

          此外,您的控制台日志显示 "I found Launch Game" 大写,而您的正则表达式 /launch game/g 没有考虑到它。如果您想不区分大小写,请改用/launch game/gi

          【讨论】:

            【解决方案5】:

            currentInput 是一个数字而不是字符串,所以你不能使用像.search这样的字符串方法

            尝试将 currentInput 设为字符串并使用 .search 方法

            另外,您的示例不包含 id 为“inputHtml”的元素。

            尝试使用oninput 而不是onchange,因为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");
                  }
                }
                &lt;input type="text" id="inputField" /&gt;

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-02-16
              • 2017-12-27
              • 2015-06-27
              • 2020-05-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多