2012-05-17 46 views
-1

我想在腳本中執行以下操作:從另一個函數訪問本地變量

在一個函數中聲明2個變量並在窗口加載時調用此函數。之後,在我的其他功能中使用這兩個變量的值。任何選項都可以做到這一點,而不必將這些變量作爲全局變量聲明在函數之外?

同樣重要的是,變量在函數中聲明,該函數將在頁面加載時調用。

HTML代碼:

<a href=''onclick='_default();return false;'>Link</a> 
<div id='mydiv'></div> 

的Javascript:

function _default() { 
    var x = document.getElementById('mydiv'); 
    var h = x.offsetHeight; 
    _main(x, h); 
} 
_default(); 

function _main(x, h) { 
    alert(x); 
    alert(h); 
} 

你會看到,這個腳本在頁面加載執行_default()_default()函數將2個參數傳遞給_main()並執行_main()函數拋出2個帶變量的警報xh。但是,如何在點擊鏈接時看到這兩條警報(請參閱上面的html代碼)?

+0

你爲什麼要問這個新的問題?你以前的問題是關於同樣的問題:http://stackoverflow.com/questions/10621495/passing-variables-values。如果你不明白我的答案,那麼請求澄清,但不要問一個新問題。 –

+1

我用一個例子更新了我的答案,因爲它似乎不知道如何使用JavaScript綁定事件處理程序(您從未回答我的最新評論)。我還建議閱讀http://www.quirksmode.org/js/introevents.html以瞭解有關事件處理的基礎知識。 –

回答

0

如果我已經理解了你的問題,那麼當第一次調用default()時,頁面還沒有被完全呈現,所以'mydiv'將是null。

如果您刪除調用_default()的行,而是從body onload調用它,則應該會發現它按預期工作。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 
    <script type="text/javascript" language="javascript"> 
     function _default() { 
      var x = document.getElementById('mydiv'); 
      var h = x.offsetHeight; 

      _main(x, h); 
     } 

     function _main(x, h) { 
      alert(x); 
      alert(h); 
     } 
    </script> 
</head> 
<body onload="_default();"> 
    <a href='' onclick='_default();return false;'>Link</a> 
    <div id='mydiv'> 
    </div> 
</body> 
</html>` 
0

,因爲它的DOM之前執行的代碼不工作已準備就緒......改變它像這樣:

function _default() { 
    var x = document.getElementById('mydiv'); 
    var h = x.offsetHeight; 
    _main(x, h); 
} 

function _main(x, h) { 
    alert(x); 
    alert(h); 
} 

window.onload = _default; 

這將導致_default()功能時觸發load事件上執行... you can read more about the window.onload method here

Working example here

相關問題