Javascript 单击时调用的函数未定义

Javascript 单击时调用的函数未定义,javascript,jquery,Javascript,Jquery,当我单击按钮时,函数未被调用 <script> $(function() { var reset = function () { obj.x = canvas.width / 2; obj.y = canvas.height / 2; }; }); </script> <input type="button" onclick="reset();" /> 为什么?因为javascript处理程序需要在

当我单击按钮时,函数未被调用

<script>
    $(function() {

    var reset = function () {
    obj.x = canvas.width / 2;
    obj.y = canvas.height / 2;

    };
    });
  </script>
  <input type="button" onclick="reset();" />

为什么?

因为javascript处理程序需要在全局范围内声明

正如在评论中所说,您的重置函数位于本地范围内,这使得它在设置onclick的全局范围内不可见

这很好,真的,不在全局范围内声明一堆函数是很好的

这里的解决方案是正确附加事件处理程序:

  <script>
    $(function() {
          var reset = function () {
          obj.x = canvas.width / 2;
          obj.y = canvas.height / 2;
       }
       document.getElementById('myButton').addEventListener('click', reset);
    });
  </script>
  <input type="button" id=myButton/>
或者,正如您使用jQuery时所看到的:

  <script>
    $(function() {
          var reset = function () {
          obj.x = canvas.width / 2;
          obj.y = canvas.height / 2;
       }
       $('#myButton').click(reset);
    });
  </script>
  <input type="button" id=myButton/>

因为函数的范围当然不是全局的,所以你在一个生命周期内将该函数设置为私有的…为什么你的按钮在你的内部?@Tushar但如果我将该函数设置为全局的,我可能不会看到canvasLink唯一的答案。