javascript - getelementsbyname 添加事件监听器

标签 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);

非常感谢!!

最佳答案

它不起作用,因为当您调用 document.getElementsByName 时 DOM 元素尚未加载,因此,您的 document.getElementsByName('lala');将返回 null。

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

<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 代码会让你陷入 hell 。

关于javascript - getelementsbyname 添加事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5285459/

相关文章:

css - 巨大的 div 边框渲染问题

javascript - 使用 JS 更改没有 id 或 class 的内联 CSS

javascript - HTML输入范围的值,getattribute vs value

javascript - 如何在客户端隐藏 API key ?

javascript - 需要隐藏文件输入中的文本并调整 IE 中浏览器按钮的大小

javascript - SearchingThrough 使用输入标签的表

html - 如何使我的网站在不同浏览器上看起来相同?

javascript - Jquery 如何在单击列表项时选中单选按钮?

Javascript解析DOM关系字符串

javascript - 使用 8th Wall SDK 与多个图像目标进行增强