javascript - 可靠地添加到 JavaScript 事件

标签 javascript onclick dom-events

我有一个单选按钮,包含一个内联 onclick 事件:

<input type="radio" class="quantitycheckbox" onclick="alterQuantity(this.form)">

我试图在点击时不显眼地添加更多功能,并使用以下代码:

function updateCustomFields( box ) {
    // save current onclick event before assigning new one
    var currEvent = box.onclick;
    box.onclick = function() {
        currEvent();
        // do additional stuff here
    }
}

var boxes = $class('quantitycheckbox');
for( var i = 0; i < boxes.length; i++ ) {
    updateCustomFields( boxes[i] );
}

但是,传递到 alterQuantity 函数的 this.form 值未定义,因此我收到错误。如何按原样保留 onclick 事件并添加我的功能?

最佳答案

您不需要对内联 onclick 事件执行任何操作。只需使用 attachEventaddEventListener 附加另一个事件即可解决您的问题,因为内联 onclick 事件始终会首先触发:

function updateCustomFields( box ) {
    var myCallback = function(){
      // Do stuff here
    }
    if(window.addEventListener){
      box.addEventListener('click', myCallback, false);
    } else if (window.attachEvent){
      box.attachEvent('onclick', myCallback);
    }
}

执行顺序为:

  1. 内嵌事件
  2. 您的新事件

关于javascript - 可靠地添加到 JavaScript 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2087571/

相关文章:

javascript - 如何保持滚动条始终在底部?

javascript - 如何使用 javascript 在单击 HTML 上的按钮时发生事件

javascript - 在 ember 中继续调用 mouseDown 上的函数

javascript - 检测子窗口何时加载 "each"时间

javascript - 谷歌地图加载错误 "google"未定义

javascript - 如何在许多 Javascript 类中引用一个对象而不将其传递到每个函数中?

javascript - Jquery仅获取Bootstrap中选定的项目

android - Android Fragment 中的按钮出现 NullPointerException onClick

javascript - 拦截所有ajax调用?

javascript - 限制保存在我的数据库中的特定域的 PHP API