0

如何从 javascript 调用包装在 YUI().use 中的 YUI 函数?

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

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

当我在 javascript 函数中验证某些内容时,我希望这种效果发生。我试着这样称呼它。但这似乎不起作用。

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

5 回答 5

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(); 
} 
于 2010-11-09T13:09:41.600 回答
0

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

在闭包之外定义一个全局变量并将您的函数分配给它,或者将您的函数分配给窗口对象

IE

var runShowAnim;

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

runShowAnim();
于 2013-06-14T14:22:08.027 回答
0

如果你想调用一个函数,你必须在函数名()后面加上 0 个或多个逗号分隔的参数。

runShowAnim();

如果该函数没有全局范围(如果它在传递给的函数内声明,则您的函数将具有全局范围use())并且没有以某种方式传递给外部,那么您只能在同一范围内执行此操作。

于 2010-10-11T09:27:50.690 回答
0

我认为你缺少括号。

function notifyUser(message) {
   document.getElementById("msgArea").innerHTML = message;
   runShowAnim(); // right here
}
于 2010-10-11T09:27:52.100 回答
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");
于 2010-10-11T09:44:42.900 回答