![](/img/trans.png)
[英]What is the correct way to use the javascript .onclick function?
[英]Javascript - Function to use onclick?
我想創建一個函數,然后與onclick
方法一起使用,例如:
one = document.getElementById("oneID");
然后,而不是為每個onclick():
編寫函數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。
您需要傳遞一個函數作為引用,而不是調用它:
one.onclick = input;
在這種情況下,您將無法傳遞參數,但是您可以將this
用作觸發事件的DOM元素的參考:
function input() {
tempStack.push(parseFloat(this.value));
viewTemp.value += this.value;
}
將函數視為普通對象,方法是:
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開發人員網絡或真正的w3c網站會更好地解釋它。
這是一種使用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/
您的要求可以通過以下方式實現:
在您的腳本標簽中添加此方法:
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/
好的,所以只需創建一個帶有參數的函數,例如:
function setValue(input){
tempStack.push(parseFloat(input.value));
viewTemp.value += input.value;
}
然后在該元素的單擊上調用該函數,例如:
var one = document.getElementById("oneID");
one.click = setValue(one);
祝好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.