<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/