2

在我理解支持该功能的 Internet Explorer 9 中,addEventListener当我尝试在此处使用该功能时给我一个奇怪的错误:

function addEvent(evnt, elem, func) {
    if (elem.addEventListener)  // W3C DOM
        elem.addEventListener(evnt,func,false);
    else if (elem.attachEvent) { // IE DOM
        elem.attachEvent("on"+evnt, func);
    }
    else { // No much to do
        elem[evnt] = func;
    }
}

(由 SO 上的另一个问题提供)

我得到错误:

SCRIPT5007:无法获取属性“addEventListener”的值:对象为空或未定义。

它断线if(elem.addEventListener)

我正在传递它document.getElementById('search'),这是一个文本输入字段;对于 evnt,我正在传递它keydown,而对于函数,我正在传递:

function(e) {
    if (!e) 
    { 
        var e = window.event; 
    }

    // Enter is pressed
    if (e.keyCode == 13) 
    {
        search($("#search").val());
        $("#search").val("");
        $("#search").blur(); 
    }
}

我在 Chrome、Firefox 或 Safari 中对此没有任何问题,但 IE9 让我很伤心。

编辑

好的,通过将 eventlistener 放入内联,我已经让 JS 正常运行,但我仍然遇到一个问题,这似乎是整个事情背后的父问题:仅在 IEdocument.getElementById('search')中返回 null 。它适用于所有其他浏览器,并且只有这一个元素返回 null。

编辑 2 - 我已更新问题标题以反映此处的真正问题。

所以现在问题的根源<input>是根本没有出现在 HTML 中(尽管它确实出现在源代码中)......?我在 a 中有输入字段<button>,它可以在其他所有浏览器中完美运行,但在 IE 中却不行。我怎样才能解决这个问题?

4

1 回答 1

5

<input>有一个inside是无效的,<button>考虑将它放在 a<label>中,或者<span>带有click处理程序和合适的 CSS 的 a 是无效的。

于 2013-04-27T20:19:55.833 回答