2013-04-08 15 views
1

我的html頁面顯示一個按鈕,當它被點擊時調用一個函數。我點擊並顯示消息,確認按鈕正常工作。我創建了這個函數來改變全局變量,但是當我點擊我的html頁面上的另一個按鈕來顯示變量的值時,變量沒有改變爲我使用函數設置它們的值。有人可以在我的代碼下面找到問題嗎?如何更改JavaScript中的全局變量?

var a = 5; 
    var b = 16; 
    var c = 27; 

    function reset(){ 
    a = 0; 
    b = 0; 
    c = 0; 
    } 

我的HTML代碼來調用該函數:

<!DOCTYPE HTML> 

    <html> 
    <center> 
    <script type="text/javascript" src="game.js" > </script> 
    <form> 
    <input type="button" value="Reset Variables" style="width:250px;height:50px" onclick="reset()" > 
    </form> 
    </html> 

Javascript代碼,顯示變量:

function display(){ 

    document.write("A is equal to " + a + "<br/>"); 
    document.write("B is equal to " + b + "<br/>"); 
    document.write("C is equal to " + c); 

} 

HTML來顯示變量

<!DOCTYPE HTML> 

    <html> 
    <center> 
    <script type="text/javascript" src="game.js" > </script> 
    <form> 
    <input type="button" value="Show Variables" style="width:250px;height:50px" onclick="display()" > 
    </form> 
    </html> 
+2

你可以告訴我們當你點擊按鈕時調用的函數嗎? – romainberger 2013-04-08 21:31:38

+0

是所有的代碼?他們如何從巴頓打來電話? – Bart 2013-04-08 21:31:46

+3

你需要包含更多的代碼。 – 2013-04-08 21:31:47

回答

0

更改函數名稱reset_vars或其他任何東西。 reset()是用於重置表單的內置DOM函數。

http://www.w3schools.com/jsref/met_form_reset.asp

不會有任何衝突,當一個全局變量中的函數裏面,除非局部變量定義。在這種情況下,使用window.variable_name來訪問全局變量。

+0

這工作完美!非常感謝 – user2154477 2013-04-08 22:37:50

0

,可以不工作,因爲你是在函數範圍內聲明變量。但你的變量目前存儲在全局範圍(窗口),所以這段代碼將工作:

var a = 5; 
function reset() { 
    console.log(window.a); // 5 
    window.a = 10; 
} 
reset(); 
console.log(a); // 10 
+0

在我的javascript函數中使用此代碼後,當我單擊按鈕以顯示變量時,仍然不會顯示已更改的變量 – user2154477 2013-04-08 21:53:37

+0

Michael您不需要通過窗口對象訪問全局變量(除非全局變量被同名變量映射)。 – nnnnnn 2013-04-09 01:31:17