在HTMLInputElement.onkeyup上未定义

时间:2018-09-26 10:12:31

标签: javascript jquery

这是我的代码:

<h2></h2>
<input type="text" onkeyup="titleb(this.value)">
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<script>
    (function($){
        function titleb( title ) {
            $('h2').html(title);
        }
    })(jQuery)
</script>

它应该接受输入的文本并将其添加到h2中...但是我得到的是:

Uncaught ReferenceError: titleb is not defined
    at HTMLInputElement.onkeyup

4 个答案:

答案 0 :(得分:1)

您的函数已嵌套

这是解决此问题的方法:

<h2></h2>
<input type="text" onkeyup="titleb(this.value)">
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<script>
    let titleb
    (function($){
        titleb = (title) => {
            $('h2').html(title)
        }
    })(jQuery)
</script>

针对不了解的人

(val) => {}function (val) {}

答案 1 :(得分:0)

您可以设法拥有一个命名空间,例如:

onkeyup="myapp.titleb(this.value)"

,并在脚本中使用以下代码:

<script>
    var myapp = (function($){
        return function titleb( title ) { // add a return
            $('h2').html(title);
        }
    })(jQuery)
</script>

答案 2 :(得分:0)

您可以简单地拥有一个像这里的功能。

function titleb(title)
{

  $('h2').html(title);
}
<script src="https://code.jquery.com/jquery-3.1.0.js"></script><h2></h2>
<input type="text" onkeyup="titleb(this.value)">

答案 3 :(得分:0)

在html中调用的函数必须在这样的全局范围内:

<script>
  function titleb( title ) {
    $('h2').html(title);
  }
</script>

这是工作中的小提琴。

http://jsfiddle.net/e7z15tqf/