提前感谢您的帮助。我在这里倾注了类似的问题,但仍然无法理解。
我有一个HTML文件,我在其中调用两个函数,我已将这些函数保存到与HTML文件相同的目录中的单独JS中。
<script type="text/javascript" src="jquery/js/jquery-1.9.0.min.js"></script>
<script type="text/javascript" src="jquery/js/jquery-ui-1.10.0.custom.min.js"></script>
<script type="text/javascript" src="translate_game.js"></script>
<script type="text/javascript">
$(document).ready( function() {
button_fun();
text_box_fun();
});
</script>
我的JS文件translate_game.js:
$(function() {
button_fun = function(){
$("#basic_button").click(function(){
$("#currentspanish").css("color", "yellow");
});
};
text_box_fun = function(){
$('#entry').focus(function(){
$("#currentspanish").css("color", "red");
});
};
});
当我刷新HTML时,控制台告诉我:未捕获的ReferenceError:button_fun未定义
为什么这个功能无法找到是否明显?
谢谢! 丹
答案 0 :(得分:2)
您不需要以这种方式定义函数,只需使用传统方法即可。您的其他函数运行时可能无法定义您的函数。
translate_game.js:
function button_fun(){
$("#basic_button").click(function(){
$("#currentspanish").css("color", "yellow");
});
}
function text_box_fun(){
$('#entry').focus(function(){
$("#currentspanish").css("color", "red");
});
}
答案 1 :(得分:0)
$(函数(){});是$(document).ready(function(){});
的一种简写语法由于您只是在translate_game.js中定义函数,因此可以删除$(function(){})包装器。由于这些脚本是同步加载的,因此translate_game.js中的函数将可用于脚本标记中的document.ready回调。
如果您想保持隐私或模块化,可以使用revealing module pattern。
此外,您应养成使用'var'定义变量的习惯,否则它们会变为全局变量。是的,无论如何,这些都将在全球范围内,但你应养成一个好习惯。