2010-10-11 46 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();