Javascript 未捕获引用错误:未为简单按钮定义startPause

Javascript 未捕获引用错误:未为简单按钮定义startPause,javascript,jquery,Javascript,Jquery,我试图创建一个按钮,将警报对话框发送到窗口,但由于某种原因,我收到了以下错误:“未捕获引用错误:未定义startPause”。我做错了什么 这是我的小提琴: 代码如下: <button onclick="startPause()">Start</button> $(function(){ function startPause(){ alert("A"); }; }); 开始 $(函数(){ 函数startPause(){ 警报(“A”); }; });

我试图创建一个按钮,将警报对话框发送到窗口,但由于某种原因,我收到了以下错误:“未捕获引用错误:未定义startPause”。我做错了什么

这是我的小提琴:

代码如下:

<button onclick="startPause()">Start</button>

$(function(){
  function startPause(){
   alert("A");
  };
});
开始
$(函数(){
函数startPause(){
警报(“A”);
};
});

您有两个不同的问题。首先,从HTML中提取javascript。其次,
startPause()
未在全局范围中定义

<button id='clicker'>Click Me!</button>

function startPause(){
    alert('A');
}

$('#clicker').click(function(){
    startPause();
});
点击我!
函数startPause(){
警报(“A”);
}
$('#clicker')。单击(函数(){
startPause();
});

确保将
脚本
标记放在
正文
元素的末尾,这样就不需要像代码中那样的包装器。

由函数表达式定义的函数继承当前范围。也就是说,函数形成一个闭包

另一方面,由函数构造函数定义的函数不继承全局范围(所有函数都继承全局范围)以外的任何范围。

也就是说,因为你不是在做作业

 $(function(){
    startPause = function(){ //var was skipped purposely
        alert("A");
    };
 });
如果您仍然需要在$(function(){})中使用它;创建具有命名空间的全局对象

 var stackoverflow = {};
 $(function(){
    stackoverflow.startPause = function(){ //var was skipped purposely
        alert("A");
    };
 });


 <button onclick="stackoverflow.startPause()">Start</button>

您不需要jQuery,您应该将JS放在
body
head
(-注意左上角的设置):

开始
函数startPause(){
警报(“A”);
};
这样,您的功能将处于全局范围。在JSFIDLE中设置
onLoad
onDomready
时,将函数包装在事件回调中,从而将其从全局范围移动


如果您需要或想要使用jQuery,请按照Jared的方式进行。通过这种方式,您可以使用jQuery绑定click事件,而不让浏览器执行此操作。这样,您就有了更多的控制权,可以从全局范围移动函数。

我的html和js文件中有代码,这不是问题所在。所以我不应该使用“onclick”事件语法吗?利与弊?我的意思是你不应该尝试在你的html
中进行内联js调用。onclick没有问题,但是您需要使用要将事件绑定到的html元素的id、类或名称在js文件中设置处理程序。还有
$(function(){
或其同级
$(document).ready(function(){
包装器,如果您将js文件的脚本标记放在body元素的末尾而不是头部,那么就不必了。好吧,但出于好奇,我该如何设置“onclick”的语法在我的html中?我仍然不知道那会是怎样的look@Stack这是一件非常基本的事情。您在标记中定义某种元素标识(id、类),然后将回调函数附加到该标识上。
<button id='clicker'>Click Me!</button>

function startPause(){
    alert('A');
}

$('#clicker').click(function(){
    startPause();
});
<button onclick="startPause()">Start</button>

function startPause(){
    alert("A");
};