2013-10-14 60 views
0

我有一個嵌套的函數,我想從外部調用。在javascript中訪問外部函數中的函數

var _Config = ""; 
var tourvar; 
function runtour() { 
    if (_Config.length != 0) { 
     tourvar = $(function() { 
      var config = _Config, 
       autoplay = false, 
       showtime, 
       step = 0, 
       total_steps = config.length; 
      showControls(); 
      $('#activatetour').live('click', startTour); 
      function startTour() { 
      } 
      function showTooltip() { 
      } 
     }); 
    } 
} 
function proceed() { 
    tourvar.showTooltip(); 
} 
$(document).ready(function() { 
    runtour(); 
}); 

我希望能通過tourvar.showTooltip()調用它;但我似乎錯了:)我怎樣才能使showTooltip()可以從函數外部?

+2

是什麼的''$?是因爲你使用jQuery或其他庫嗎?在那種情況下,哪個庫是它? –

+2

只需在外部聲明該功能。沒有理由在其他函數中聲明它。 – Manolo

+0

'tourvar.showTooltip = function(){...}'(儘管你將不得不使用本地JS對象,而不是jQuery包裝的對象)。 –

回答

1

,因爲我以前的答案是一個真正的熱點當家之一,我決定把它刪除,併爲您提供另一個問題:

var _Config = ""; 
var tourvar; 

// Module pattern 
(function() { 
    // private variables 
    var _config, autoplay, showtime, step, total_steps; 

    var startTour = function() { }; 

    var showTooltip = function() { }; 

    // Tour object constructor 
    function Tour(config) { 
     _config = config; 
     autoplay = false; 
     step = 0; 
     total_steps = _config.length; 

     // Provide the user with the object methods 
     this.startTour = startTour; 
     this.showTooltip = showTooltip; 
    } 

    // now you create your tour 
if (_Config.length != 0) { 
     tourvar = new Tour(_Config); 
    } 
})(); 

function proceed() { 
    tourvar.showTooltip(); 
} 
$(document).ready(function() { 
    runtour();  
}); 
+0

感謝你的迴應....我做了一個小改動,但得到了一個巡迴undefined 。如果(_Config.length!= 0){tourvar = new Tour(_Config); tourvar.showControls(); }移動到函數runtour中,該函數應該關閉遊覽並且showcontrols函數應該顯示控件。我在函數Tour()中聲明瞭ShowControls var。Anway,當我runtour()我得到Tour時未定義。 – spanout

+0

我已經把當前代碼放在http://jsfiddle.net/tckxh/ – spanout

+0

中對它進行了排序... 99%你的代碼......唯一的另一件事是因爲我已經編輯了一些......感謝你的幫助......現在明白了這一點更多 – spanout

0
function outerFunction() { 
    window.mynestedfunction = function() { 
    } 
} 
mynestedfunction(); 
相關問題