Javascript 在外部js文件上使用$(document).ready时函数不工作

Javascript 在外部js文件上使用$(document).ready时函数不工作,javascript,jquery,Javascript,Jquery,我有一个简单的按钮,在index.html中调用函数,函数本身在script.js中,函数在不使用$(document).ready(function(){/…})时工作但是只要我添加这一行(在script.js),它就不起作用了。这就是它的样子: index.html: <button onclick="myFunction()">Click</button> script.js不带$(文档)。准备就绪:(正在工作) Jquery使用选择器和绑定事件解决了这个问题 在

我有一个简单的按钮,在
index.html
中调用函数,函数本身在
script.js
中,函数在不使用
$(document).ready(function(){/…})时工作
但是只要我添加这一行(在
script.js
),它就不起作用了。这就是它的样子:

index.html

<button onclick="myFunction()">Click</button>
script.js不带
$(文档)。准备就绪:(正在工作


Jquery使用选择器和绑定事件解决了这个问题

在此cas中使用
$(“按钮”)。单击()
以在单击按钮时侦听。 删除内联
onclick

希望这有帮助:>

$(文档).ready(函数(){
$(“按钮”)。单击(()=>警报(“好的!”);
});


单击
另一个选项是,您可以在document.ready范围之外创建变量。也许,这不是你最好的选择,但会完成工作

var func;                      
$(document).ready(function(){
  func= function()
  {
    alert('Alright!');
  }
});



<button onclick="func()">Click</button>
var-func;
$(文档).ready(函数(){
func=函数()
{
警惕(“好的!”);
}
});
点击

函数执行完成后,
$(document).ready()中匿名函数的作用域将不再可用。因此无法从此作用域调用函数。

您必须添加一个名为jQuery的JavaScript库。因为您使用的是jQuery的语法。(一个丰富而强大的JavaScript库)

在普通JavaScript中,我们使用
document.getElementById('btnSubmit')
但是在jQuery中,我们编写
$(“#btnSubmit”)
来做同样的事情

这就是为什么需要使用jQuery库。您可以直接从cdn使用它,也可以脱机下载

如果您想使用cdn,只需添加以下内容

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/core.js"></script>

在jQuery中,我们使用的还有一件事

$(文档).ready(函数(){
//你的密码在这里
})

确保DOM解析/呈现完成后脚本有效


谢谢。

这是因为当加载HTML时,onClick属性已被读取,但此函数仍未加载


在这种情况下,最好的方法是在ready事件上进行绑定。

是否已将jquery添加到项目中?这是因为在第一个版本中,您仅在ready handler函数的范围内定义了
myFunction
。因此,在该范围之外不可用。你为什么要这么做?第二个版本可以工作,那么问题是什么呢?如果要使用document ready并在其中声明方法,请动态绑定事件处理程序,而不是内联绑定。我只需要在单独的文件中使用它,因此我假设如果它不在范围内,那么在外部文件中实际检查documet.ready是没有意义的?那么,对于上面的简单示例,包含document ready以及如何绑定事件处理程序的正确方法是什么呢?这就是您不应该使用内联事件客户机的原因之一
onclick=“myFunction()”
。例如,您应该在
按钮
元素上使用
addEventListener('click',myFunction,false)
,或在('click',myFunction)
上使用
$('button')。在('click',myFunction)
上,这将起作用,但不是一个好的解决方案。您不应该污染全局命名空间,也不应该使用内联事件侦听器。您完全正确。肮脏的做事方式
var func;                      
$(document).ready(function(){
  func= function()
  {
    alert('Alright!');
  }
});



<button onclick="func()">Click</button>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/core.js"></script>