如何删除此JavaScript函数中设置的事件侦听器?如果可能,我想从其他功能执行此操作吗?如果这不可能,则可以从同一函数中使用。

function _dtmCheckFundingEditLink() {


    function _dtmGetCurrentFundingAmount() {

        var currAmt = "NA";

        try {

            currAmt = sessionStorage.getItem("_dtmFundAmount");

        } catch (err) {

            return currAmt;

        }

        return currAmt;

    };



    editLink = document.querySelectorAll('.btn-grp-back');



    if (editLink != null) {

        editLink[2].addEventListener('click', function() {

            var clNm = s.pageName + ":" + _dtmGetCurrentFundingAmount() + ":edit";

            _dtmReportCL(clNm);

        })

    } else {

        setTimeout(_dtmCheckFundingEditLink, 1000);

    }

};

最佳答案

将事件侦听器调用的函数声明为一个单独的函数,而不是匿名函数:

function handler(){
  //handle event
}


添加事件监听器:

.
.
.
if (editLink != null) {

        editLink[2].addEventListener('click', handler);

    } else {

        setTimeout(_dtmCheckFundingEditLink, 1000);

    }
.
.
.


现在您可以从单独的函数中删除该处理程序:

 function sampleFunction(){
   editLink = document.querySelectorAll('.btn-grp-back');
   editLink[2].removeEventListener('click', handler);

}

10-06 03:42