2010-10-11 48 views
0

我怎样才能调用一个YUI函数,它被封装在一个YUI()中。如何从Javascript执行YUI函数?

示例 下面是执行animShow.run()的YUI函数“runShowAnim”。对于动画效果...

var runShowAnim = function(e) { 
    animShow.run(); 
}; 

我想要这个效果,当我在验证一个JavaScript函数事情发生。我试图按照以下方式调用它。但它似乎并不奏效。

function notifyUser(message) { 
    document.getElementById("msgArea").innerHTML = message; 
    runShowAnim(); 
} 
+0

你的意思是runShowAnim **()**的权利(与这些pa)? – Nivas 2010-10-11 09:27:03

回答

0

如果要调用一个函数,你有()的后缀函数名和包括它们之间的0个或多个逗号分隔的参数。

runShowAnim(); 

如果函数没有全局范围,而不是外界传递某种方式,那么你只能从同一范围内做到这一点(因为如果它被传递给use()函数内声明你所拥有的)。

+0

我认为范围对我来说是一个问题。如何在YUI()中创建一个函数。use('anim','node',function(Y){});有全球范围? – 2010-10-11 09:30:50

+0

请勿使用'var' – Quentin 2010-10-11 09:41:06

0

我想你错过了括号。

function notifyUser(message) { 
    document.getElementById("msgArea").innerHTML = message; 
    runShowAnim(); // right here 
} 
+0

我有括号。错过了在我放置所需位的时候把它们放在问题中。我得到的错误是未定义函数runShowAnim – 2010-10-11 09:35:17

+0

它们是否在相同的范围内定义? – Marko 2010-10-11 09:40:26

0

YUI.thefunction()?

我认为你需要与命名空间太

类似的东西来调用它

var X = function(){}; 
X.Y = function(){}; 
X.Y.Z = function(){}; 
X.Y.Z.foo = function(e){alert(e);} 

//foo("me");<-error 

X.Y.Z.foo("me"); 
2

我通过一个函数内部完全夹在中间的YUI功能和调用该函数来实现这个..

var runShowAnim = function() { 
    YUI().use('anim', 'node', function(Y) { 
     var animShow = new Y.Anim({ 
     node: '#msgArea', 
     to: { height: 50,opacity:1 } 
     }); 
     animShow.run(); 
    }); 
}; 

现在我可以调用runShowAnim没有任何问题,如下面的示例函数..

function notifyUser(message) { 
    document.getElementById("msgArea").innerHTML = message; 
    runShowAnim(); 
} 
0

如果要从外部调用已经在闭包中定义的函数(函数作为最后一个参数传递给YUI.use),则需要全局公开该函数。

无论是定义一个全局变量关闭之外,你的功能分配给它,或者你的功能分配给窗口对象

var runShowAnim; 

YUI().use(function(e){ 
    runShowAnim = function(){alert('called');} 
}); 

runShowAnim();