JavaScript以编程方式设置onchange事件

时间:2016-05-13 16:26:34

标签: javascript

function __setOnchangeEvent()
{
    var inputs = document.getElementsByTagName('input');
    if (inputs)
    {
        for (var i = 0; i < inputs.length; i++)
        {
            if (inputs[i].id.indexOf('display_hidden') >= 0)
            {
                console.debug("outer1: " + inputs[i].outerHTML);
                //inputs[i].addEventListener("onchange", __hideInfoIcon);
                inputs[i].onchange = '__hideInfoIcon';
                console.debug("outer2: " + inputs[i].outerHTML);
            }
        }
    }
} __setOnchangeEvent();

调试输出: Debug output

调试输出清楚地显示onchange值未设置。

我的错误在哪里?

1 个答案:

答案 0 :(得分:2)

  

调试输出清楚地显示onchange值未设置。

不,它没有。调试输出只显示HTML,因为这是您显示的内容:

console.debug("outer2: " + inputs[i].outerHTML);

如果您希望以某种方式看到HTML 更改只是因为您正在设置事件处理程序,那么您就错了。 HTML和DOM事件是两回事。

您可以在内嵌HTML中分配事件处理程序,但事件本身不是HTML显示的一部分。

您可以通过调用该事件来测试事件处理程序,而不是通过查看HTML标记来测试。

  

我的错误在哪里?

除此之外,这看起来也不正确:

inputs[i].onchange = '__hideInfoIcon';

这不是一个功能,它只是一个字符串。如果您有该名称的函数,请将其用作事件处理程序:

inputs[i].onchange = __hideInfoIcon;