javascript - 如何获取 HTML 对象的 onclick?

标签 javascript

使用 vanilla JS 我想知道是否可以在 HTML 对象 (div) 上看到 onclick 属性

for (var name in element) {
        if(name == "onclick"){
            // do smt
        }
    }

最佳答案

您可以立即检索 elementonclick 属性,而不是枚举 element 的属性:

var clickHandler = element.onclick;

现在的事件与 addEventListener(以及旧版 IE 中的 attachEvent)绑定(bind),允许每个事件类型有多个处理程序。设置 oneevent 属性仅允许一个处理程序,可以被覆盖,并且通常不是在网页中绑定(bind)处理程序的方式。

不幸的是,如果不编写跟踪它们的包装函数,您将无法检索与 addEventListener (和 attachEvent)绑定(bind)的任何监听器...例如:

var events = [];
function addEvent(element, eventName, callback) {
    element.addEventListener(eventName, callback, false);
    var found = false;
    for (var i = 0; i < events.length; i++) {
        if (events[i].el === element) {
            found = true;
            events[i].list.push(callback);
            break;
        }
    }
    if (!found) {
        events.push({
            el: element,
            list: [callback]
        });
    }
}

function viewEvents(element) {
    for (var i = 0; i < events.length; i++) {
        if (events[i].el === element) {
            return events[i].list;
        }
    }
    return null;
}

你会这样使用它:

var div = document.getElementById("some_id");
addEvent(div, "click", function () {
    console.log("whatever");
});

console.log(viewEvents(div));

(当然,您需要一个 removeEventListener 的包装器,它也可以从 events 中删除处理程序)

关于javascript - 如何获取 HTML 对象的 onclick?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16863585/

相关文章:

javascript - 10 秒后终止子进程 - NodeJS

javascript - 多个物体不摆动,保持卡住

javascript - 在 javascript 中将纪元时间显示为 HHMM 格式

javascript - CORS 不适用于 firebase 云功能中的特定域

javascript - 如何循环显示特定项目

javascript - 如何管理特定 div 上的事件?

javascript - 访问我的 JavaScript 对象内的页面全局 JavaScript 变量?

javascript - 我正在尝试从 JSON 文件检索数据,但在从特定属性检索信息时遇到问题

等效于 C strncmp 的 JavaScript(比较字符串的长度)

javascript - react : How could we check if a state's parameter is not undefined?