使用 javascript 更改 onClick 属性

新手上路,请多包涵

这是我的函数,它应该改变 HTML 输入的 onClick 属性,但如果我使用

document.getElementById('buttonLED'+id).onclick = "writeLED(1,1)";

它根本不起作用,但如果我使用

document.getElementById('buttonLED'+id).onclick = writeLED(1,1);

该函数自行执行!任何想法在单击按钮之前,我必须使用什么代码来更改 onCLick 属性而不执行该函数?

如果重要的话,这是完整的功能:

 function showLED(id){
    if(color == 0){
        document.getElementById('buttonLED'+id).onclick = "writeLED(1,1)";
        document.getElementById('buttonLED'+id).value="light is on";
        //document.getElementById('buttonLED'+id).disabled = false;
    }else{
        document.getElementById('buttonLED'+id).onclick = "writeLED(1,0)";
        document.getElementById('buttonLED'+id).value="light is off";
        //document.getElementById('buttonLED'+id).disabled = false;
    }
}

原文由 shiro 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

好吧,只要这样做,你的问题就解决了:

 document.getElementById('buttonLED'+id).setAttribute('onclick','writeLED(1,1)')

祝你有美好的一天XD

原文由 Marcelo Teixeira Ruggeri 发布,翻译遵循 CC BY-SA 3.0 许可协议

你想这样做 - 设置一个将被执行以响应 onclick 事件的函数:

 document.getElementById('buttonLED'+id).onclick = function(){ writeLED(1,1); } ;

您正在做的事情不起作用,因为:

  1. onclick 事件处理程序期望有一个函数,在这里你分配一个字符串
   document.getElementById('buttonLED'+id).onclick = "writeLED(1,1)";

  1. 在此,您将执行 writeLED(1,1) 函数的结果指定为 onclick 事件处理程序:
    document.getElementById('buttonLED'+id).onclick = writeLED(1,1);

原文由 DanC 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题