Jquery - 导入的脚本但功能“未定义”

时间:2014-02-02 08:55:25

标签: javascript jquery

我的HTML:

<script type="text/javascript" src="js/myjs.js"></script>
<script>
...
$("#enviornment").hide().delay(1200).css({'display':'block', 'opacity':'0'}).animate({'opacity':'1'}, 300, function() {
    $("#main").css("display", "none");
    appearWindow($(".window.q"));
...
</script>

myjs.js包含:

if ("undefined" == typeof jQuery)throw new Error("Nviornment requires jQuery");
$(function() { 
    ...
    function appearWindow(target) {
        changezindex(target);
        target.hide().css({'display':'block', 'opacity':'0'}).animate({'opacity':'1'}, 300)
        target.find(".help").css({'display':'block', 'opacity':'0', 'right':'-40px', 'position':'absolute', 'width':'100%'}).animate({'opacity':'1','right':'0px'}, 580);
    }
    ...
})

在将一些代码导出到.js文件之前,代码运行正常。 但是现在appearwindow没有运行,控制台会打印ReferenceError: appearWindow is not defined

2 个答案:

答案 0 :(得分:2)

由于您已在Anonymous函数下添加了函数,因此其范围将无法在外部使用。您可以通过以下方式完成:

if ("undefined" == typeof jQuery)throw new Error("Nviornment requires jQuery");
$(function() { 
    ...
    window.appearWindow = function(target) {
        changezindex(target);
        target.hide().css({'display':'block', 'opacity':'0'}).animate({'opacity':'1'}, 300)
        target.find(".help").css({'display':'block', 'opacity':'0', 'right':'-40px', 'position':'absolute', 'width':'100%'}).animate({'opacity':'1','right':'0px'}, 580);
    }
    ...
})

另一方面你可以使用它:

$("#enviornment").hide().delay(1200).css({'display':'block', 'opacity':'0'}).animate({'opacity':'1'}, 300, function() {
$("#main").css("display", "none");  
// either by
appearWindow($(".window.q"));  
// or by this  
window.appearWindow($(".window.q"))

答案 1 :(得分:1)

我认为这是一个范围问题。

您的功能位于何处(目标){....?

是否在像

这样的全局匿名函数中
(function(){
    ....
    appearWindow(target){
        ....
    }
    ....
})()

如果是这样,您无法从外部访问您的功能