我创建了一个文档来加载一个.js文档,该文档包含我创建的一些JQuery函数。我想使用firebug控制台在我的html文档上快速测试这些函数的功能。但是当我尝试在控制台中调用这些函数时,我没有得到任何响应。
例如:
我有一个调用我的JS的index.html:
<script src="jquery.js" type"text/javascript"></script>
<script src="myfunctions.js" type="text/javascript"></script>
Myfuntions.js中定义了以下内容:
function showAbout(){
$('div#about').show("slow");
$('.navbar #about-button').attr('disabled', true);
}
问题:
当我尝试从index.html上的控制台调用showAbout
或showAbout()
时,我没有得到任何更改。但是,当我直接从控制台调用$('div#about').show("slow");
或$('div#about').show("slow");
时,我会得到预期的行为
从控制台调用用户定义函数的正确方法是什么?
答案 0 :(得分:22)
如果在全局范围内定义showAbout
,您应该能够在控制台中编写showAbout();
并查看结果。如果没有,那么你可能会将你的函数放在作用域函数中,如下所示:
(function() {
function showAbout() {
}
})();
如果是这样,对您有益,您已避免创建全局变量/函数。但它确实意味着您无法从控制台访问这些功能,因为控制台只能访问全局范围。
如果要导出其中任何一个,以便可以从控制台使用它们(可能只是暂时用于调试),你可以这样做:
(function() {
window.showAbout = showAbout;
function showAbout() {
}
})();
明确地在引用您的函数的全局对象(showAbout
)上放置window
属性。然后控制台中的showAbout();
将起作用。
答案 1 :(得分:2)
您的showAbout()
可能不在全球范围内。
它可能被$(document).ready()
代码包裹,其范围仅限于该函数。
对于测试,您可以在...下面添加
window.showAbout = showAbout;
一旦定义了该功能,您就可以从控制台调用showAbout()
。