Javascript IE 10,document.links无法使用链接id访问,只能使用索引访问

Javascript IE 10,document.links无法使用链接id访问,只能使用索引访问,javascript,html,Javascript,Html,以下代码适用于FireFox 23.0.1和Chrome 29,但不适用于IE 10。有什么问题吗 <!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript"> function loadFile1(){ alert("loading..."); }

以下代码适用于FireFox 23.0.1和Chrome 29,但不适用于IE 10。有什么问题吗

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript">
          function loadFile1(){
              alert("loading...");
          }
    </script>
</head>
<body>
    <a href="file2.html" id="link1">file 1</a>
    <h2>Hello</h2>
    <script type="text/javascript">
        var arr = document.links;
         document.links['link1'].onclick = loadFile1;
     </script>
</body>
</html>

函数loadFile1(){
警报(“加载…”);
}
你好
var arr=document.links;
document.links['link1'].onclick=loadFile1;

在我看来像个bug
document.links
返回一个,因此您可以使用
HTMLCollection.namedItem(name)
方法按名称检索链接:

document.links.namedItem('link1').onclick = loadFile1;

这将适用于所有浏览器。

document.getElementById('link1')。onclick=…
或者,可能是因为当您单击锚元素时,它会在您看到警报之前离开页面。@Fabricio Mattéonclick中的警报会阻止页面离开,直到它被解除。@Strelok
alert
s是DOM0-它们没有规范。只是我们知道的每一个浏览器都会阻止解释器,直到警报解除为止,但好吧,我们谈论的是IE。这只是一个假设,因为不幸的是,我目前无法在IE10上测试。@Fabricio Matté看到我的答案了。是的,
namedItem
方法()是实现这一点的标准方法。但是,由于元素有一个id,访问它的一种标准且更简单的方法是使用
document.getElementById
imho。