当前位置:嗨网首页>书籍在线阅读

11-事件

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

18.10 事件

DOM API中包含了大约200个事件,而每个浏览器还实现了各自的非标准事件,因此,本书不会介绍所有事件,只会涵盖那些你需要知道的事件。从一个很容易理解的事件开始:点击事件( click )。下面会通过click事件将“highlight”button跟 highlightParas 函数绑定起来:

const highlightActions = document.querySelectorAll('[data-action= 
"highlight"]');
for(let a of highlightActions) {
    a.addEventListener('click', evt => {
        evt.preventDefault();
        highlightParas(a.dataset.containing);
    }); 
} 
const removeHighlightActions =
    document.querySelectorAll('[data-action="removeHighlights"]');
for(let a of removeHighlightActions) {
    a.addEventListener('click', evt => {
        evt.preventDefault();
        removeParaHighlights();
    });
} 

每个元素都有一个叫作 addEventListener 的方法,它允许事件发生时指定调用方法。这个函数只接受一个参数:一个Event类型的对象。event对象中包含了所有关于这个事件的信息,而不同类型的事件将会有不同类型的信息。比如,click事件包含 clientXclientY 属性,它们可以提供点击事件发生时的坐标。另外, target 属性代表触发点击事件的元素。

事件模型是为了让多个处理器同时处理一个事件而设计的。很多事件都有默认处理器。比如,如果用户点击一个链接,浏览器通过加载链接中请求的页面来处理这个事件。如果想阻止这个默认的处理事件,可以在event对象上调用 preventDefault() 。开发人员编写的大部分事件处理器都会调用 preventDefault() 方法(除非明确知道自己想在默认处理器的基础上做一些额外处理)。

为了让元素高亮,可以调用 highlightParas 函数,给它传入 buttoncontaining 这个数据属性的值:这样就可以通过简单地修改HTML来改变要查找的文本。