-3

我是编码新手,在大学学习网络技术的第一年。对于我的网络作业,我必须创建一个网络应用程序,它允许用户为职业设置不同的偏好并显示与偏好匹配的职业。

无论如何,我已经设法做到了,但我在 Internet Explorer 中遇到了问题,我的网站在 Safari、Chrome 和 Firefox 中运行良好。但是,在 IE 中,当您按下我的搜索按钮时,似乎没有运行 JavaScript。我已经在 IE 中调试了我的网站,但在这部分代码中出现了错误:

var resetBtn = document.getElementById("resetBtn");
resetBtn.addEventListener("click", reset, false);

错误发生在第二行,消息是:

Object doesn't support property or method

我该怎么做才能修复错误?

错误截图

链接到屏幕截图

谢谢你

4

3 回答 3

6

在 Internet Explorer 中,您需要使用attachEvent

相关问题:Javascript 中的 MSIE 和 addEventListener 问题?

于 2013-05-03T18:00:00.803 回答
2

是的,就像之前说的,IE 不知道 addEventListener 方法,所以,你需要这样做:

var resetBtn = document.getElementById("resetBtn");
if( resetBtn.addEventListener ){
    resetBtn.addEventListener("click", reset, false);
}else{
    resetBtn.attachEvent("onclick", reset);
}

这样,您正在做正确的方法,即检查浏览器的功能。特别是在这种情况下,我们正在测试浏览器是否支持 addEventListener(标准方法),如果不支持,则回退到 IE 方法,即 attachEvent 并且事件名称前面必须有一个“on”字样。

同样,如上所述,您可以包含一个库,例如 jquery、prototype、mootools 等。但我强烈建议将其保留在纯 JS 中以用于学习目的,是的,库可以帮助您更快地编码,但您会跳过大量的学习,此外,纯 JS 比任何一天任何时间的任何图书馆都快得多。

希望这可以帮助。

于 2013-05-03T19:08:13.717 回答
0

您的 IE 似乎处于兼容模式,表现为旧版本不支持addEventListener. 如果您不关心 IE 8 和更早版本,您可以通过X-UA-Compatible从服务器发出标头来强制浏览器退出兼容模式。您还可以在<head>HTML 文件中设置以下元标记(尽管也强烈建议从服务器发出正确的 HTTP 标头):

<meta http-equiv="X-UA-Compatible" content="IE=Edge" >

如果您需要支持旧 IE,请attachEvent按照 aug 的答案中的建议进行查看。

于 2013-05-03T18:01:55.797 回答