使用函数(this)onclick,并在按下Javascript / html中的特定按钮时调用该函数

时间:2017-11-26 22:21:55

标签: javascript html this

我正在努力解决以下问题。 我有一个带有按钮的HTML页面,当用鼠标单击按钮时,该按钮会更改它的名称/值。我还希望在键盘上按键时更改此值,但我无法解决此问题。

按钮的代码如下:

<input type ="button" name="pin" value="PIN" id="toggle1" onclick="myFunctionPIN(this)">

它调用myFunctionPIN(this)函数,如下所示:

function myFunctionPIN(obj) {
    if (obj.value == "PIN")
        obj.value = "CASH", myform.pin2.value = "CASH";
    else
        obj.value = "PIN", myform.pin2.value = "PIN";   
}

这会将按钮的值更改为&#34; CASH&#34;或&#34; PIN&#34;。当一个人输入字母时,我现在也会尝试进行此更改。在它的键盘上。为此,我添加了一个eventListener:

document.addEventListener("keydown", keyDownTextField, false);

function keyDownTextField(c) {
  var keyCode = c.keyCode;
  if(keyCode==67) {
    myFunctionPIN();
  }
}

我试图以几种方式调用myFunctionPIN: myFunctionPIN(this)myFunctionPIN(obj)call(myFunctionPin(this)),但无济于事。有没有办法让按钮的值随着按下c&#39;而变化。按钮,还是我需要以不同的方式进行设置?

如果有人花时间阅读并理解问题,请提前致谢:)

1 个答案:

答案 0 :(得分:0)

您需要显式获取DOM元素对象(addEventListener没问题)。我也建议不要使用&#34; onclick&#34;属性(特别是在你已经使用<input type ="button" name="pin" value="PIN" id="toggle1"> 的情况下):

var myElement = document.getElementById('toggle1');

function myFunctionPIN() {
  myElement.value = myElement.value == "PIN" ? "CASH" : "PIN"; 
} 

function keyDownTextField(c) {
  if(c.keyCode == 38) {
    myFunctionPIN();
  }
}  
myElement.addEventListener("click", myFunctionPIN, false);
document.addEventListener("keydown", keyDownTextField, false);

代码:

{{1}}