2013-10-23 38 views
0

我想知道如何通過函數輸入更改不同的變量。通過函數輸入更改不同的變量

可以說我有兩個不同的變量,MyX = 100和MyY = 150。我想通過函數的輸入來添加10到其中之一。

<button onclick="Test(MyX)"><p>Test</p></button> 
<button onclick="Test(MyY)"><p>Test</p></button> 

在JavaScript中,我做了第三個變量,然後用於函數內部的計算。

function Test(MyZ) 

如何輸出原始變量而不必爲每個可能的輸入變量生成if語句?

感謝您的幫助!

+0

'MyX'是從來沒有在這裏設置使用變量。你期望這個做什麼? –

+0

MyX和MyZ在預運行腳本中定義。他們在一張桌子被提出。我希望能夠通過改變輸入來改變這兩個功能=) –

+0

我仍然處於虧損狀態,我認爲你必須爲你的問題增加更多的代碼。你的意思是:'MyX = MyX + 10;'? –

回答

0

我想你誤解了參數/方法調用的概念。

在您的例子:

<button onclick="Test(MyX)"><p>Test</p></button> 
<button onclick="Test(MyY)"><p>Test</p></button> 

這裏發生的是點擊這些按鈕時,功能Test被調用的任何值MyXMyY當前包含。在這種情況下,沒有任何額外的代碼,它們都是空的。

你的低級功能,在.js文件中定義:

function Test(MyZ) 
{ 
//.. 
//.. 
//.. 
} 

這是一個功能(方法)。當你調用這個方法時,它會根據傳入的參數來執行代碼。

這裏會發生什麼是測試中的代碼將調用MyZ的值爲MyXMyY,具體取決於哪個按鈕被點擊。

這樣做的範圍可以防止您修改最初在您的按鈕單擊中定義的變量。你可以在這裏做的是一個void函數,這意味着它只是副作用。您可以更改類/全局變量,但不是標記中定義的變量。

我希望這能說明一些事情。

0

從您的澄清評論:

我想在函數(MYZ)是由臨時MYX/MYY宣佈在函數中使用的變量。因此:<button onclick="Test(MyX)"><p>Test</p></button> function Test(MyZ) { MyZ=MyZ+10; }將MyX的值增加了10個。

你不能在JavaScript中這樣做。該函數接收傳遞給它的值,而不是對包含它的變量的任何引用。

可以做的是添加一層間接。放在一個對象中的所有這些變量,並通過鍵名來代替:

<script> 
    var my_values = { 
     x: 100, 
     y: 150 
    }; 

    function test(key) { 
     my_values[key] += 10; 
    } 
</script> 

<button onclick="test('x');">test</button> 
<button onclick="test('y');">test</button> 

這是一個更好的辦法,無論如何,因爲它(略)降低了所有你要的全局狀態。JS更容易推理,如果你不把它放在你的HTML中,把你的變量和函數放在一個命名空間中,等等。

+0

這似乎是一個很棒的解決方案,但是當我嘗試提醒(鍵)時,它給了我MyStone,而不是它的價值。 ' <按鈕的onclick = 「測試( 'MyStone')」>

測試

' –

+0

右。關鍵是關鍵。 :)'my_values [key]'是值。 – Eevee

+0

我不知道爲什麼進入不起作用的評論,對不起! –

0

我不是100%確定我理解你的問題,但我要去刺傷。這聽起來像你想用一個函數來遞增一個數字(X/Y/Z),然後返回原始值。 (它有點擊敗計算的目的,但...)

function Test(param){ 
    var originalVal = param; 
    var newVal = param + 10; 
    return originalVal; //it would make more sense if you return the newVal here 
} 

該函數需要一個參數或任何變量,你傳入並進行計算。

0

而不是作爲函數參數使用elementIDs作爲參數

<input type="text" id="myx" /> 
<input type="text" id="myy" /> 

<button onclick="Test('myx')"><p>Test</p></button> 
<button onclick="Test('myy')"><p>Test</p></button> 

function Test(x){ 
document.getElementById(x).value=parseInt(document.getElementById(x).value)+10; 
}