这是我的函数,它应该更改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;
}
}
好吧,只需这样做,你的问题就解决了:
document.getElementById('buttonLED'+id).setAttribute('onclick','writeLED(1,1)')
有一个美好的一天XD
你想这样做 - 设置一个函数来执行以响应onclick事件:
document.getElementById('buttonLED'+id).onclick = function(){ writeLED(1,1); } ;
你正在做的事情不起作用,因为:
document.getElementById('buttonLED'+id).onclick = "writeLED(1,1)";
document.getElementById('buttonLED'+id).onclick = writeLED(1,1);
行onclick = writeLED(1,1)
意味着你想立即执行带参数1,1的函数writeLED(arg1,arg2)并分配返回值;您需要创建一个将使用这些参数执行并分配该函数的函数。最上面的答案给出了一个例子 - 另一个是使用bind()函数,如下所示:
var writeLEDWithSpecifiedArguments = writeLED.bind(this, 1,1);
document.getElementById('buttonLED'+id).onclick = writeLEDWithSpecifiedArguments;
你实际上并没有改变这个功能。
onClick
被赋值给一个函数(这是对某事的引用,在这种情况下是一个函数指针)。传递给它的值无关紧要,不能以任何方式使用。
另一个问题是你的变量color
似乎无处不在。
理想情况下,在函数内部,您应该使用此逻辑并让它找出要写的内容。 (开/关等等)
使用Jquery而不是Javascript,使用'attr'
属性而不是'setAttribute'
喜欢
$('buttonLED'+id).attr('onclick','writeLED(1,1)')