Javascript 什么时候应该使用on*DOM属性和on*HTML属性?

Javascript 什么时候应该使用on*DOM属性和on*HTML属性?,javascript,Javascript,因此,我可以选择使用下面的两个实现来跟踪单击了哪个li元素。第一个只是一个例子 选项1: var ul = document.getElementById('inputField'); ul.onkeyup= function (event) { var target = getEventTarget(event); var userInput = target.value; alert(userInput ); }; <input id="inputField"

因此,我可以选择使用下面的两个实现来跟踪单击了哪个li元素。第一个只是一个例子

选项1:

var ul = document.getElementById('inputField');
ul.onkeyup= function (event) {
    var target = getEventTarget(event);
    var userInput = target.value;
    alert(userInput );
};
<input id="inputField" onkeyup="alert(userInput)" />
选项2:

var ul = document.getElementById('inputField');
ul.onkeyup= function (event) {
    var target = getEventTarget(event);
    var userInput = target.value;
    alert(userInput );
};
<input id="inputField" onkeyup="alert(userInput)" />


我知道在上面的例子中,越短的越有吸引力。然而,如果我计划使用几个输入字段,选项1更具吸引力,因为我不必为每个输入字段编写每个属性的代码。我的问题是。。。有没有一种方法比另一种方法更令人不快

两者都是同样糟糕的,而且都不受欢迎(就像使用jQuery一样)。使用
addEventListener

ul.addEventListener("keyup", function () {
    // callback
});

如果您想与较旧的浏览器兼容,请添加一个检查
addEventListener
的包装器,并返回到
attachEvent

,这两种方法都同样糟糕,并且不受欢迎(就像使用jQuery一样)。使用
addEventListener

ul.addEventListener("keyup", function () {
    // callback
});


如果您想与较旧的浏览器兼容,请添加一个检查
addEventListener
的包装器,并返回到
attachEvent

它们都不吸引人..只需为输入提供一个公共类..并为该类提供您在keyup上执行的函数..jquery使其非常简单。避免内联编码..I建议阅读附加事件处理程序(,)的不同方法。它应该强调每种方法的(缺点)优势。什么是
getEventTarget
?@OPUS:不是每个人都想使用jQuery。@Rocket:可能是一种处理W3C/IE差异的方法(
event.target
vs
event.srcElement
).两者都不吸引人..只需为输入提供一个公共类..并为该类提供您在keyup上执行的函数..jquery使其非常简单。避免内联编码..我建议阅读附加事件处理程序(,)的不同方法。它应该强调每种方法的(缺点)优势。什么是
getEventTarget
?@OPUS:不是每个人都想使用jQuery。@Rocket:可能是一种处理W3C/IE差异的方法(
event.target
vs
event.srcElement
)。*属性上的
问题比等效属性多,我认为这有时仍然有用。我不明白原型和事件侦听器有什么共同点。旧IE有
attachEvent
,因此推荐使用。不是JS原型,而是应用程序/网站原型(我认为),在这种情况下,只在*
属性上使用
比处理
attachEvent
addEventListener
更容易。此外,
attachEvent
也有自己的问题,
this
没有引用处理程序分配到的元素。我的错误是不清楚。我所说的“原型制作”是指快速制作原型、一次性页面。例如,概念验证页面。它只是更短、更兼容,而且您并不总是需要能够向每个元素添加多个相同类型的侦听器。那么只需使用jQuery即可:P
on*
属性比等价属性有更多的问题,我认为它们有时仍然有用。我不明白原型和事件侦听器有什么共同点。旧IE有
attachEvent
,因此推荐使用。不是JS原型,而是应用程序/网站原型(我认为),在这种情况下,只在*
属性上使用
比处理
attachEvent
addEventListener
更容易。此外,
attachEvent
也有自己的问题,
this
没有引用处理程序分配到的元素。我的错误是不清楚。我所说的“原型制作”是指快速制作原型、一次性页面。例如,概念验证页面。它只是更短、更兼容,而且您并不总是需要能够向每个元素添加多个相同类型的侦听器。那么只需使用jQuery即可:P