2013-04-27 65 views
0

我的下一個在JS:JS /調用函數定義在其他功能

function doC() { 
    this.try = document.getElementById("try"); 


function tryC(){ 

     //do something 
    } 
} 

現在,我要打電話tryC功能,當所以我寫了下:

<script type="text/javascript" src="myFile.js"></script> 
<script type="text/javascript">tryC();</script> 

但如我所見,沒有任何事情發生。何我打電話tryC()

+0

'do'是'if'這樣的關鍵字,所以您應該重命名該函數。 – Blender 2013-04-27 10:23:31

+0

'doC'不是關鍵字,所以沒關係。 – Bart 2013-04-27 10:37:38

回答

1

你tryC的內部文檔定義,它不是暴露(它是私有的),你可以這樣做:

function doC() { 
     this.try = document.getElementById("try"); 

     return function(){ 
      alert('Try C'); 
     } 
    } 

    doC()(); // alerts 

function doC() { 
    this.try = document.getElementById("try"); 

    return { 
     tryC : function(){ 
        alert('Try C'); 
       } 
    } 
} 

doc().tryC(); //alerts 

或者你的方式(全局各地)

function doC() { 
      this.try = document.getElementById("try"); 

      this.tryC = function(){ 
       alert('Try C'); 
      } 
    } 

doC(); // call first! 
tryC(); // alerts 
3

您已在doC的範圍內定義C。它不能在doC之外訪問。

如果您希望它可以全局訪問,那麼您必須明確地爲其指定一個全局。

window.C = function() { /* etc */ }; 

創建全局通常是一個壞主意,更何況在加載時不會創建它們。有可能有更好的方法來實現你想要解決的任何問題。

相關問題