Javascript - 使用onclick的功能?

时间:2013-12-14 12:22:30

标签: javascript html onclick

我想创建一个函数,然后使用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库来帮助解决这个问题,即vanilla JavaScript。

5 个答案:

答案 0 :(得分:2)

您需要传递一个函数作为参考,而不是调用它:

one.onclick = input;

在这种情况下,您将无法传递参数,但您可以使用this作为触发事件的DOM元素的参考:

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

答案 1 :(得分: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会更好地解释它。

答案 2 :(得分: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/

答案 3 :(得分: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/

答案 4 :(得分:-2)

好的,所以只需创建一个带有参数的函数,如:

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

然后点击该元素调用该函数,如:

var one = document.getElementById("oneID");
one.click = setValue(one);
祝你好运!