JavaScript没有';看不到函数外的变量
我有这个功能:JavaScript没有';看不到函数外的变量,javascript,jquery,Javascript,Jquery,我有这个功能: $(function ($) { ... }); var getNotifyBar = $(".NotifyBar"); function showNotify(text) { getNotifyBar.hide().find(".text").html(text).end().slideDown(); } 当我使用函数showNotify(text)时,什么都不会发生。但是当我把它放在JavaScript控制台(浏览器的)中时,它就可以工作了。很可能这是在呈现所有具
$(function ($) {
...
});
var getNotifyBar = $(".NotifyBar");
function showNotify(text) {
getNotifyBar.hide().find(".text").html(text).end().slideDown();
}
当我使用函数
showNotify(text)
时,什么都不会发生。但是当我把它放在JavaScript控制台(浏览器的)中时,它就可以工作了。很可能这是在呈现所有具有NotifyBar类的元素之前运行的
var getNotifyBar = $(".NotifyBar");
这意味着当您稍后尝试使用它时,它是空的。您应该这样做:
var getNotifyBar;
$(function ($) {
getNotifyBar = $(".NotifyBar");
});
现在应该正确加载了。接下来,您需要记住getNotifyBar是对已经从选择器加载的jQuery对象的引用。因此,您不需要将其包装在$()
中。您应该进行以下更改:
function showNotify(text) {
getNotifyBar.hide().find(".text").html(text).end().slideDown();
}
您的代码现在不可能在控制台中工作,因为当您在控制台中运行它时,它在DOMReady之后。将代码放在示例中的3个点的位置,它将起作用,因为:
$(function($){
//code here
})
将在DOMReady之后运行代码顶部的随机匿名函数与什么有关系???仅供参考:您在匿名函数中接受一个参数,但没有将其传入。(即
$(函数($){…})(jQuery);
)传递到showNotify的文本变量是如何定义的或在哪里定义的?请尝试$(.NotifyBar”).hide()等。
-您的getNotifyBar
变量可能是空的jQuery对象,因为它是在DOM准备就绪之前创建的(假设脚本位于
中或相关元素之前)。@mrk如果您指的是函数内部,那么这就是参数您是否调用showNotify?