代码之家  ›  专栏  ›  技术社区  ›  Jack Roscoe

如何动态分配javascript“onclick”属性?

  •  8
  • Jack Roscoe  · 技术社区  · 14 年前

    我正在使用JavaScript动态创建一个按钮,同时分配诸如“id”、“type”等属性,以及“onclick”以触发函数。

    除了分配“onclick”之外,所有的工作都很好。单击时,按钮不会按预期触发功能。我尝试运行的函数是“导航(-1)”,如下所示。

    我哪里出错了?

    以下是我的代码:

    function loadNavigation() {
    var backButton;
    backButton = document.createElement('input');
    backButton.ID = 'backButton';
    backButton.type = 'button';
    backButton.value='Back';
    backButton.onclick = 'navigate(-1)';
    document.body.appendChild(backButton);
    }
    
    6 回复  |  直到 14 年前
        1
  •  19
  •   nico    14 年前

    正如另一个所说,您应该分配一个函数。

    只是想指出,在这种情况下,您希望传递一个值,因此您需要分配一个匿名函数(或内联定义的命名函数),如

    button.onclick = function() {otherfunction(parameter)};
    

    如果要分配的函数不需要参数,则可以直接使用它

    button.onclick = otherfunction;
    

    注意,这种情况下没有括号

    button.onclick = otherfunction(); // this doesn't work
    

    不会像它所说的那样工作 otherfunction 一旦被分析

        2
  •  4
  •   jasonmw    14 年前

    您正在为onclick分配文本,请尝试分配函数。

    backButton.onclick = function(){navigate(-1);};
    
        3
  •  3
  •   Quentin    14 年前

    您必须分配一个函数,而不是字符串。

    backButton.onclick = function wastefulDuplicationOfBackButton () {
        navigate(-1);
    }
    
        4
  •  1
  •   Eli Grey    14 年前

    使用函数而不是字符串。例如,

    backButton.onclick = function () { navigate(-1); };
    
        5
  •  1
  •   Christian C. Salvadó    14 年前

    您应该分配一个函数,而不是一个字符串:

    //...
    backButton.onclick = function () {
      navigate(-1);
    };
    //...
    
        6
  •  0
  •   Kevin Le - Khnle    14 年前
    backButton.onclick = function() { navigate(-1); }