我有一个java脚本函数my_func()
,我想在页面加载时调用它。以下是我将得到的奇怪行为:如果我在文档中调用函数,它将无法工作:
function my_func(){
//do something
}
$(document).ready(function(){
my_func();
});
但是如果我在一个事件上调用它就可以了:
function my_func(){
//do something
}
$(document).ready(function(){
$('#myId').click( function(){
my_func();
});
});
有人有任何想法吗?如何直接在文档中调用它?
答案 0 :(得分:2)
您的问题是,在加载其余DOM时,尚未加载dijit.form.TextBox
。您需要更改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
的更多信息,请参见Dojo's documentation。
答案 1 :(得分:0)
问题是不将函数放入$(document).ready()
,见下文:
工作小提琴:
$(document).ready(function(){
my_func();
});
function my_func(){
$("#black").css("background", "black");
}
相反,可能是您的代码中的其他位置正在创建您的函数,并且在dom准备就绪时它尚未初始化。