getelementsbyname addeventlistener

时间:2011-03-12 21:01:01

标签: javascript html dom

<form>
<a name='lala'/><a name='lala'/>
</form>

<script type='text/javascript'>
var elem=document.getElementsByName('lala');
alert(elem.length);
</script>

警告弹出0!?? 所以这使得下一个不工作!??

for(i in elem)
 elem[i].addEventListener('click',function(){alert('lala');}, false);
非常感谢!!

3 个答案:

答案 0 :(得分:2)

这是行不通的,因为当你拨打document.getElementsByName时 DOM元素尚未加载,因此,document.getElementsByName('lala');将返回null。

有多种方法可以在DOM元素准备就绪时执行功能。最简单的方法是在<head>中创建一个函数,并在身体的加载事件中调用它

<head>
    <script type="text/javascript">
    function domLoaded() {
       var elem=document.getElementsByName('lala');
          alert(elem.length);
       }
    </script>
</head>

<body onload="domLoaded();">


   ....


</body>

当您将javascript函数放在标记的末尾时,您刚开始在元素准备就绪时调用代码。这也会起作用,但是以正确的方式做事并将所有JS代码放在head元素中是不是更好?通过抛出JS代码,当你需要解决问题时,整个代码将会让你生活在地狱。

答案 1 :(得分:0)

所有浏览器都不支持

getElementsByName,有关所有浏览器兼容性的信息,请参阅here

然而,这对我有用。我正在运行Chrome 10.0.648.127

答案 2 :(得分:-3)

javascript代码必须包含在页面底部, 这就是为什么你应该总是将你的js代码放在页面底部。 非常感谢大家;)