事件

1.DOM事件和DOM2级在事件监听使用方式上有啥区别?

事件监听器也叫事件处理程序,是为了响应某个事件的方法

  • DOM事件监听方式
    1.HTML内联方式
 
事件_第1张图片

2.JavaScript指定事件处理程序
把一个方法赋值给一个元素的事件处理程序属性




  • DOM2事件监听方式
    DOM2事件处理程序,定义了两个方法用于处理指定和删除事件处理程序的操作;所有的DOM方法都包含这两个方法,并且接受三个参数
    1.addEventListener
    2.removeEventListener
    参数:
    1.事件类型(click,mouseover....)
    2.事件处理方法
    3.true/false(默认值为false,冒泡阶段才触发)

      var btnClick=document.getElementById('btnClick');
      btnClick.addEventListener('click',function(){
      alert(this.id);
      })
    
事件_第2张图片

2.attachEvent和addEventListener的区别是什么?

addEventListener: 是DOM2级获取事件处理程序的方法,它包含三个参数(事件类型、事件处理方法、布尔参数true/false-默认值为false即是冒泡阶段触发)
attachEvent:IE浏览器事件处理程序方法,同时接收两个参数:(事件处理程序名称、事件处理程序方法)

3.解释IE事件冒泡和DOM2事件的传播机制?

IE事件冒泡:从点击最具体的逐步往外冒泡,IE有且仅有事件冒泡机制
DOM2级事件:包含事件捕获阶段、处于目标阶段、事件冒泡阶段,大部分浏览器都支持DOM2事件流,IE除外;它包含的三个参数(事件类型、事件方法、布尔值)中的布尔值决定了该方法在那个阶段触发;默认值false在冒泡阶段触发,true在捕获阶段触发。

4.如何阻止事件冒泡?如何阻止默认事件?

  • IE事件模型中:
    1.如何阻止事件冒泡?
    对event对象下的cancelBubble进行赋值
    2.如何阻止默认行为?
    对event对象下的returnValue进行赋值

  • DOM2事件流中
    1.如何阻止事件冒泡?
    对event对象使用stopPropagation()方法
    2.如何阻止默认事件?
    对event对象使用preventDefault()方法

5.有如下代码,需求当点击每一个li的时候控制台显示该元素文本内容。不考虑兼容性

  • 这里是
  • 饥人谷
  • 前端6班

代码

function $(e){
    if(document.querySelectorAll(e).length > 1){
        return document.querySelectorAll(e);
    }else{
        return document.querySelector(e);
    }
}
var li = $('li')
for(var i = 0; i < li.length; i ++){
    li[i].addEventListener('click', function(){
        console.log(this.innerText)
    })
}

6.补全代码,要求

  • 当点击按钮开头添加时,在

  • 这里元素添加一个新元素,内容为用户输入的非法空字符串;当点击结尾添加时在最后一个li元素后添加用户输入的非法空字符串

  • 当点击每一个元素li时候控制台展示该元素的文本内容

      
    • 这里是
    • 饥人谷
    • 任务班

代码

// 封装一个函数,用来获取相对应的DOM-node
function $(ele){
if(document.querySelectorAll(ele).length>1){
    return document.querySelectorAll(ele)
}
else{
    return document.querySelector(ele)
}
}


var star=$('#btn-add-start');
var end=$('#btn-add-end');
var content=$('.ipt-add-content');
var ct=$('.ct');
var li=$('.ct>li');



// 点击尾部添加

end.addEventListener('click',function(){
var li=document.createElement('li');
ct.appendChild(li);
li.innerText=content.value;
content.value='';  //归零清空输入框内容
})

// 点击头部添加

star.addEventListener('click',function(){
var li=document.createElement('li');
ct.insertBefore(li,ct.firstChild);
li.innerText=content.value;
content.value='';
})

// 点击console文本内容
li.forEach(function(ele){
ele.addEventListener('click',function(){
    console.log(ele.innerText)
    })

})

7.补全代码,要求:当鼠标放置在li元素上,会在img-preview里展示当前li元素的data-img对应的图片。

    
  • 鼠标放置查看图片1
  • 鼠标放置查看图片2
  • 鼠标放置查看图片3

代码

function $(ele){
        if(document.querySelectorAll(ele).length>0){
            return document.querySelectorAll(ele);
        }
        else{
            return document.querySelector(ele);
        }

    }


    var ct=$('.ct');
    var ImgPreview=$('.img-preview');
    var list=$('.ct>li');


    list.forEach(function(ele){


        
        ele.addEventListener('mouseenter',function(){
            var img=document.createElement('img');
            img.src=ele.getAttribute('data-img');
            ImgPreview[0].appendChild(img);
        })
        ele.addEventListener('mouseleave',function(ele){
            ImgPreview[0].innerHTML=''
        })
    })

你可能感兴趣的:(事件)