Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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,我有一个java脚本函数my_func(),我想在页面加载时调用它。下面是我将得到的奇怪行为:如果我调用文档中的函数ready,它将无法工作: function my_func(){ //do something } $(document).ready(function(){ my_func(); }); 但如果我在某个活动中调用它,它就可以正常工作: function my_func(){ //do something } $(document).ready(function()

我有一个java脚本函数
my_func()
,我想在页面加载时调用它。下面是我将得到的奇怪行为:如果我调用文档中的函数ready,它将无法工作:

function my_func(){
//do something
}
$(document).ready(function(){
   my_func();   
});
但如果我在某个活动中调用它,它就可以正常工作:

function my_func(){
//do something
}
$(document).ready(function(){
   $('#myId').click( function(){
       my_func();
    });   
});
有人知道吗?如何在document ready中直接调用它?

问题在于没有将函数放入
$(document).ready()
,请参见以下内容:

工作小提琴:


相反,可能是您的函数正在代码中的其他地方创建,并且在dom准备就绪时尚未初始化。

您的问题是,
dijit.form.TextBox
在加载dom的其余部分时尚未加载。您需要更改
my_func
代码以包含对
require
的调用:

function my_func() {
    require(['dijit/form/TextBox'], function(TextBox) {
        // ...
        var newBox = new TextBox();
        // ...
    });
}
每个Dojo类都需要这样做。例如,如果您还需要dijit.form.Button:

function my_func() {
    require(['dijit/form/Button', 'dijit/form/TextBox'], function(Button, TextBox) {
        // ...
    });
}

有点遗憾的是,它如此冗长,但事情就是这样。有关
require
的详细信息,请参见。

此函数的作用是什么?在哪里定义了
my_func
?您可能正在执行:
my_func=function(){…
而不是
function my_func(){…
。有一点不同。不,该函数未在另一个函数中定义。请查看已编辑的question@Amin:那么,我们真的需要看看函数的内容;从您向我们展示的内容来看,它应该可以正常工作。谢谢您的回答,我知道这样一个简单的函数可以正常工作。我无法定义函数ide的作用域,因为正如我所说,我可以在$()内调用它我的问题是,如果我不能在ready函数中调用这个函数,而我可以在ready函数中的函数中调用它,那会是什么情况呢!!!这实际上解决了这个问题!:D非常感谢。我认为如果我在html标题中加上require就足够了,但看起来还不够!谢谢总之…@Amin:以前你可以在顶部使用
dojo.require
,它会同步加载你需要的任何模块,但这会使页面无响应,因此在较新版本中,它被替换为这个异步
require
,不幸的是,它需要对现有代码进行一些更改。
function my_func() {
    require(['dijit/form/Button', 'dijit/form/TextBox'], function(Button, TextBox) {
        // ...
    });
}