使用javascript更改onClick属性

时间:2013-02-26 19:11:36

标签: javascript html function

这是我的功能,它应该更改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;
    }
}

6 个答案:

答案 0 :(得分:62)

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

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

祝你有个美好的一天XD

答案 1 :(得分:45)

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

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

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

  1. onclick事件处理程序需要一个函数,在这里你要分配一个字符串

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

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

答案 2 :(得分:3)

onclick = writeLED(1,1)表示您希望立即执行带参数1,1的函数writeLED(arg1,arg2)并指定返回值;您需要创建一个将使用这些参数执行并分配该函数的函数。最上面的答案给出了一个例子 - 另一个例子是使用bind()函数,如下所示:

    var writeLEDWithSpecifiedArguments = writeLED.bind(this, 1,1);
    document.getElementById('buttonLED'+id).onclick = writeLEDWithSpecifiedArguments;

答案 3 :(得分:0)

您实际上并未更改此功能。

onClick被分配给一个函数(这是对某事的引用,在这种情况下是一个函数指针)。传递给它的值无关紧要,不能以任何方式使用。

另一个问题是你的变量color似乎无处不在。

理想情况下,在函数内部,您应该使用此逻辑并让它找出要写的内容。 (开/关等等)

答案 4 :(得分:0)

使用Jquery而不是Javascript, 使用type-b属性而不是'attr'

喜欢

'setAttribute'

答案 5 :(得分:0)

另一种解决方案是将“ onclick”属性设置为返回您的writeLED函数的函数。

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

这在其他情况下也很有用,当您在JavaScript中创建尚未在浏览器中绘制的元素时。