Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么此函数需要在document.ready中?_Javascript_Jquery - Fatal编程技术网

Javascript 为什么此函数需要在document.ready中?

Javascript 为什么此函数需要在document.ready中?,javascript,jquery,Javascript,Jquery,我刚刚花了几个小时试图弄明白为什么一个简单的函数不能在调试器中激活。最后我把它写进了文档。准备好了,它就成功了。然而,在其他页面上,类似的功能在DocumentReady之外工作。有人能想出发生这种情况的原因吗 简单功能: $('#chk').change(function () { .... } 在页面上: <input type="checkbox" id="chk" /> 这是一个很大的页面吗?javascript可能在浏览器完成其DOM构建之前开始运行。将代码放入doc

我刚刚花了几个小时试图弄明白为什么一个简单的函数不能在调试器中激活。最后我把它写进了文档。准备好了,它就成功了。然而,在其他页面上,类似的功能在DocumentReady之外工作。有人能想出发生这种情况的原因吗

简单功能:

$('#chk').change(function () {

....
}
在页面上:

<input type="checkbox" id="chk" />

这是一个很大的页面吗?javascript可能在浏览器完成其DOM构建之前开始运行。将代码放入document ready意味着在DOM 100%完成之前不会调用代码。

$(document)。ready
DOMContentLoaded
上激发,这意味着整个html源代码都已处理,并且您确信可以访问输入


如果您这样做,并将脚本放在
之前,那么它将无法工作,因为在脚本执行时,它找不到您的输入

您是否知道document.ready通常做什么以及为什么使用它?这取决于页面上必须实现多少javascript代码。可以将其视为页面的初始化。当页面准备就绪时,需要将som函数关联到html元素。顺便说一句,它不是您所引用的函数,而是一个事件侦听器。但是你可以在事件监听器之外有一个函数,比如函数Test(),然后.change事件调用该函数。页面大小与此无关-它完全取决于事物的位置顺序。“不太可能”->“不会”--有主见:)好的,我明白,但是我如何知道html元素是在事件侦听器之前还是之后加载的呢?例如,在另一页上,完全相同的函数在文档外部工作。就绪。@BMills可能
script
tag在
input
元素之后包含;另一个可能的原因可能是在脚本标记中使用了
async
属性。谢谢。我怀疑我会对这个问题投反对票,但这是值得的,因为我现在更明白了。我不知道为什么人们会对一个只想学习的人投反对票。