从firebug控制台调用自定义函数

时间:2012-02-19 23:03:17

标签: javascript jquery function console firebug

我创建了一个文档来加载一个.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上的控制台调用showAboutshowAbout()时,我没有得到任何更改。但是,当我直接从控制台调用$('div#about').show("slow");$('div#about').show("slow");时,我会得到预期的行为 从控制台调用用户定义函数的正确方法是什么?

2 个答案:

答案 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()