事件

作者: BAMO | 来源:发表于2017-02-01 18:30 被阅读0次

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

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

  • DOM事件监听方式
    1.HTML内联方式
 <input type="button" value="Click Here" onclick="alert('Clicked!')">

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

<input id="btnClick" type="button" value="Click Here2">
<body>
<script>
var btnClick=document.getElementById('btnClick');
btnClick.onclick=function shoeMessage(){
    alert(this.id);
}
</script>
  • 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.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的时候控制台显示该元素文本内容。不考虑兼容性

<ul class="ct">
<li>这里是</li>
<li>饥人谷</li>
<li>前端6班</li>
</ul>
<script>
//todo ...
</script>

代码

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>元素添加一个新元素,内容为用户输入的非法空字符串;当点击结尾添加时在最后一个li元素后添加用户输入的非法空字符串

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

      <ul class="ct">
      <li>这里是</li>
      <li>饥人谷</li>
      <li>任务班</li>
      </ul>
      <input class="ipt-add-content" placeholder="添加内容"/>
      <button id="btn-add-start">开头添加</button>
      <button id="btn-add-end">结尾添加</button>
      <script>
      //你的代码
      </script>
    

代码

// 封装一个函数,用来获取相对应的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对应的图片。

    <ul class="ct">
    <li data-img="1.png">鼠标放置查看图片1</li>
    <li data-img="2.png">鼠标放置查看图片2</li>
    <li data-img="3.png">鼠标放置查看图片3</li>
    </ul>
    <div class="img-preview"></div>
    <script>
    //你的代码
    </script>

代码

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=''
        })
    })

相关文章

  • JavaScript事件01——事件流

    大纲:概念(事件、事件流)事件流模型(事件冒泡、事件捕获、DOM事件流) 一、概念: 1、事件:事件就是用户或浏览...

  • 事件对象,事件监听,事件冒泡,事件代理

    一、事件对象 二、冒泡事件:(事件从子元素往父级元素向上触发事件)处理兼容问题:主流浏览器:e.stopPropa...

  • 事件总结

    DOM事件主要内容 事件流 事件注册 事件对象 事件分类 事件代理 什么是DOM事件? 事件是某个行为或者触发,比...

  • Javascript事件系统

    本文内容 事件基础 事件监听方式 事件默认行为 事件冒泡与事件捕获 事件绑定与事件委托 事件基础 注意:本文不会深...

  • Javascript事件-事件冒泡,事件捕获,事件监听和事件委托

    事件处理机制 (一)DOM事件流 DOM模型是一个树形结构,在DOM模型中,HTML元素是有层次的。当一个HTML...

  • 【事件】事件流

    1、JavaScript和HTML之间的交互通过事件实现的。2、事件流描述的是从页面中接收事件的顺序。3、IE 和...

  • 【事件】事件对象

    触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的额信息。(包括导致事件的元...

  • 【事件】事件类型

    DOM3 级事件规定了以下几类事件: UI(User Interface,用户界面)事件,当用户与页面上的元素交互...

  • 2018-09-10JQuery高级应用

    JQuery事件 window事件 鼠标事件 键盘事件 表单事件 事件注册语法$(对象).type(fn)type...

  • JS事件

    ?事件的相关术语 事件类型: 鼠标事件、键盘事件事件名称: click、dbclick等事件目标: 表示与发生事件...

网友评论

      本文标题:事件

      本文链接:https://www.haomeiwen.com/subject/jignbttx.html