我决定删除从 html 表单元素到外部文件对 JavaScript 事件的所有调用。在这样做时,我为每个项目注册了一个事件。但是,无法再使用使用“this
”访问元素属性,我决定使用 event.target.value
作为 value 属性和 event.target .name
用于名称属性。我认为这不是最好的实现,因为我通过实现它得到了一些不利的结果。
下面是我实现的代码以及有关该问题的更多信息:
JavaScript 内联事件处理程序(之前)
<input type="radio" name="rdb_NewUsers" value="1" list="#{'true':'Yes','false':'No'}" onclick="configureItemsForRadioButton(this.value, this.name)"
JavaScript 注册外部事件处理程序(之后)
var configureRadioButtons = {
onClick:function(evt){
evt.stopPropagation();
console.log(evt.target.value + '||'+evt.target.name);
configureItemsForRadioButton(evt.target.value, evt.target.name);
}
};
dojo.connect(dojo.byId("rdbNewUser"), "onclick", configureRadioButtons, "onClick");
我面临的问题是,当我单击任何按钮时,它实际上会执行 console.log(evt.target.value + '||'+evt.target.name);
即使它不是按钮的注册事件。我认为使用 event.target
指的是在页面上执行的任何事件。除了 evt.target.value
之外,还可以使用什么来引用触发事件值和名称的对象。
最佳答案
如果您要避免使用像 jQuery 这样的 DOM 操作工具(我不推荐),您可以执行以下操作:
var myButton = document.getElementById("myButton");
myButton.addEventListener('click', function(){alert('Hello world');}, false);
如果您使用 jQuery(推荐),它将像这样工作:
$('#myButton').on('click', function() {alert('Hello world');});
关于JavaScript 在外部注册事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27129395/