我的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
答案 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){
....
}
....
})()
如果是这样,您无法从外部访问您的功能