Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript没有';看不到函数外的变量_Javascript_Jquery - Fatal编程技术网

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?