0

例如,我习惯于在我的网站中使用内联事件

<head>
<script>
function func() {
alert("test");
}
</script>
</head>
<body>
<div id="mydiv" onclick="func()"></div>
</body>

我注意到现在的网站根本不使用内联事件。我知道您可以务实地设置事件,例如:

document.getElementById('mydiv').onclick = function(){ func()}

这是应该怎么做的吗?我是否必须将上述行放在每一页的末尾?

按键、单击和模糊事件如何附加到本网站的输入字段,例如:https ://twitter.com/signup

谢谢。

4

4 回答 4

1

是的,这是向对象添加事件的一种有效方法,但它会阻止一次绑定多个函数。

我建议研究 jQuery(或类似的 javascript 库,如 mootools),这是当今绝大多数网站绑定其 javascript 事件的方式。

例如,在 jQuery 中,您通常会像这样绑定点击:

$("#mydiv").click(function(event) {
  // click handling code
});
于 2012-07-02T08:18:14.657 回答
0

添加事件侦听器的最简洁方法是使用内置方法:

var el = document.getElementById('mydiv');
if (el.addEventListener) {
  el.addEventListener('click', modifyText, false); 
} else if (el.attachEvent)  {
  el.attachEvent('onclick', modifyText);
}

function modifyText() {

}

这促进了更清洁、更易读和可重用的代码。(注意attachEvent是 IE9 之前的版本)

您可以将此代码放置在<body>标记的末尾(或<body>标记内的任何位置,但在添加 DOM 元素之后)或在窗口onload函数中 - 在 DOM 完成加载后执行:

window.onload = function() {  
  // here
}; 
于 2012-07-02T08:16:46.310 回答
0

首选的方法是使用addEventListener,通常与一个库(例如YUIjQuery)结合使用,以平滑浏览器之间的变化(例如,旧的 IE 不支持addEventListener)。

我是否必须将上述行放在每一页的末尾?

通常你会将 JavaScript 放在它自己的文件中,然后将src它放到需要它的每个页面中。

于 2012-07-02T08:18:25.157 回答
0

这里的主要思想是应该加载要在其上注册处理程序的 DOM 元素。因此,要么在元素 html 之后进行事件绑定,要么可以在 window.onload 事件处理程序中进行,它可以在实际标记定义之前定义,如下所示:

window.onload = function(){
 // your event binding
}

但我的建议是尽可能在文档末尾包含 javascript。

于 2012-07-02T08:19:02.407 回答