2013-12-14 64 views
0

我想創建一個函數,然後用onclick方法使用,例如:Javascript - 使用onclick的函數?

one = document.getElementById("oneID"); 

然後,而不是寫功能的每個onclick():

one.onclick = function(x) { 
    tempStack.push(parseFloat(one.value)); 
    viewTemp.value += one.value; 
} 

我想用一個單一的功能:

one.click = input(one); 

但我不知道如何以正確的方式做到這一點,例如下面我試過,不起作用:

var input = function(x) { 
     tempStack.push(parseFloat(x.value)); 
     viewTemp.value += x.value; 
} 

最後,沒有外部JavaScript庫來幫助這個問題,香草JavaScript。

+0

可能的重複[Javascript .onc lick = functionName傳遞參數](http://stackoverflow.com/questions/19546480/javascript-onclick-functionname-passing-parameters) – Quentin

+0

對每個HTML元素的onClick事件調用你的單一方法不是更好嗎? –

+1

@ user3102101如果它適合您的需求,接受一個答案。每個人的左邊都有一個刻度線。 – Pavlo

回答

0

想想作爲普通對象,所以方法是:

function input (event) { 
    // Process the event... 

    // event is my event object 
    // this is the object which trigger the event 
    // event.target is my button 
} 

on.onclick = input; 

您必須將input功能作爲一個正常的變量。

函數input將收到一個事件對象作爲參數。您也可以參考點擊this的按鈕。

也許mozilla developer networkthe real w3c site會更好地解釋它。

+3

W3Schools是一個可怕的,經常錯誤的,經常過時的教程/參考站點,根本與W3C無關。 – Quentin

+0

我會接受,謝謝^^。也許你可以推薦我們另一個參考網站? – p2kmgcl

+1

在一般情況下,'this'實際上不是被點擊的對象。這是事件發生的對象。 'event.target'是被點擊的對象。 (它們可以是不同的,因爲元素(儘管不是可能*輸入的'')可以具有後代)。 – Quentin

2

你需要傳遞一個函數作爲參考,不能稱之爲:

one.onclick = input; 

在這種情況下,你將無法傳遞參數,但可以使用this作爲參考在其上發射事件的DOM元素:

function input() { 
    tempStack.push(parseFloat(this.value)); 
    viewTemp.value += this.value; 
} 
0

下面是使用JavaScript的.addEventListener(),提到一個以前的答案,使用this穿過DOM節點元素的inputFunction中使用的方法。

<input type="text" value="64.23" id="bt" /> 

<script> 
    function inputFunction(x) { 
     console.log(x.value); //Console Logs 64.23 
    } 

    var bt = document.getElementById("bt"); 
    bt.addEventListener('click', 
          function(){ 
           inputFunction(this) 
          }, false); 
</script> 

小提琴http://jsfiddle.net/Lhq6t/

-2

好了,只是創建一個含有參數的函數,如:

function setValue(input){ 
    tempStack.push(parseFloat(input.value)); 
    viewTemp.value += input.value; 
} 

然後調用該元素一樣的點擊功能:

var one = document.getElementById("oneID"); 
one.click = setValue(one); 

祝你好運!

+1

除了重命名功能,你有什麼改變? – Pavlo

0

您的需求可以通過以下方式實現:

添加這個方法在你的腳本標籤:

function input(x) { 
    /*tempStack.push(parseFloat(x.value)); 
    viewTemp.value += x.value;*/ 

    alert(x.id);  
} 

然後打電話給你的按鈕的這種方法onClick事件/錨狀:

<input type="button" id="oneID" value="oneID" onClick="input(this);"/> 
<input type="button" id="twoID" value="twoID" onClick="input(this);"/> 
<a href="#" id="threeID" onClick="input(this);">threeID</a> 

參見工作示例:http://jsfiddle.net/Avd5U/1/

+0

您正在通過javascript添加onClick事件,直接將它們添加到您的代碼中。 –