美文网首页
进阶任务-9

进阶任务-9

作者: 小羊熊 | 来源:发表于2017-09-02 18:29 被阅读16次

1.DOM0 事件和DOM2级在事件监听使用方式上有什么区别?

//DOM0监听事件
var btn = document.getElementById('#btn');
btn.onclick = function(){
console.log('DOM0点击事件监听')
}
//this指向元素自身,这种方法的缺点是只听添加一个事件程序,如果多添加了,后面的会把前面的覆盖掉


//DOM2级事件监听
var btn = document.getElementById('#btn');
btn.addEventListener('click/dbclick/mouseover/mouseout.....',function(){
console.log('DOM2事件监听')
})
//这种添加事件监听的方法,比较推荐,可以给一个元素添加多个事件,this指向元素本身

2 .attachEvent与addEventListener的区别?

  • 先说说attachEvent,IE浏览器中的事件处理方法,
    1. 只接受2个参数attachEvent('带on的事件名称',function(){要做事的函数代码})
    2. 这个事件处理程序中,他的作用域是全局作用域,因此this的指向是window
    3. 给目标元素添加多个事件之后,标准浏览器中的执行顺序是按照代码的先后顺序进行执行的,但是attachEvent是按照,最后添加最先执行这样的顺序来的
  • addEventListener,标准浏览器中的事件处理方法
    1. 能接受3个参数 addEventListener('不带on的事件名称',function(){要做事的函数代码},一个布尔值,默认为false意为在冒泡阶段处理事件,为true的时候就是在捕获阶段的时候来处理事件)
    2. 他的作用域是目标元素的作用域,this指向的是当前元素
    3. 给目标元素添加多事件之后,处理顺序与代码顺序一致

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

  • IE的事件冒泡传播机制,就和它的字面意思“冒泡”一样,想象一下鱼缸里面的鱼吐泡泡,就能知道,是一种从目标元素自身向“水面”上逐级传播的一个过程
  • DOM2事件传播机制,它分完整的3个阶段
    第一阶段是事件捕获阶段,由最上层向下穿透,为截取事件提供机会
    第二阶段是处于目标阶段,实际目标接收事件
    第三阶段是冒泡阶段,从目标元素开始,向上层穿透

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

  • 对于标准浏览器来说,直接调用event对象中的stopPropagation()方法,就可以阻止事件冒泡。阻止默认事件的话直接用preventDefault()方法就可以啦
  • 对于老IE而言,他的event对象中由cancelBubble属性,默认的值为false,当给它改成true的时候,就可以取消事件冒泡了。如果取消默认的事件行为的话,把returnValue的值设置为false来取消默认的事件行为

5.点击每一个元素li时控制台展示该元素的文本内容。不考虑兼容

<ul class="ct">
    <li>这里是</li>
    <li>饥人谷</li>
    <li>前端6班</li>
</ul>
<script>
  function $(id){
        return document.querySelector(id);
    }
  function $$(cla){
        return document.querySelectorAll(cla);
    }
   var liNodes = $$('.ct li')
   liNodes.forEach(
      function(node){
        node.addEventListener('click', function(){
            console.log(this.innerText)
        })
      }
    )
</script>

6. 补全代码

第六题

<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>
// 第6题
   var ulNode = $('.ct'),
       startBtn = $('#btn-add-start'),
       endBtn = $('#btn-add-end'),
       ipt = $('.ipt-add-content'),
       reg =/^\w+$/ ;
      //事件委托,事件冒泡的一种使用方法 显示每个li的内容的需求得到解决
      ulNode.addEventListener('click', function(e){
        if(e.target.tagName.toLowerCase()==='li'){
          console.log(e.target.innerText)
        }
      })
      //头部添加li  dom方法‘insertBefore’不熟 还要多看一下
        startBtn.addEventListener('click', function(){
        var li = document.createElement('li');
        var iptVal = ipt.value;
        if (reg.test(iptVal)) {
         li.innerText  = iptVal;
         ulNode.insertBefore(li,ulNode.firstChild);
        } 
          else {
              console.log('只能由英文,数字,下划线,组成!')
            }
      })
      //尾部添加li 
      endBtn.addEventListener('click', function(){
        var li = document.createElement('li');
        var iptVal = ipt.value;
        if (reg.test(iptVal)) {
         li.innerText  = iptVal;
         ulNode.append(li);
        } 
          else {
              console.log('只能由英文,数字,下划线,组成!')
            }
      })

function $(id){
        return document.querySelector(id);
    }
function $$(cla){
        return document.querySelectorAll(cla);
    }
</script>

7. 补全代码

第七题代码

<style type="text/css">
.img-preview img{
    width: 400px;
    height: 400px;
}
</style>
<ul class="ct">
    <li data-img="https://ws1.sinaimg.cn/large/006tKfTcly1fj5d2lzwlxj30ny0ogq4p.jpg">查看图片1</li>
    <li data-img="https://ws2.sinaimg.cn/large/006tKfTcly1fj5d4qc4yzj30l411cac8.jpg">查看图片2</li>
</ul>
<div class="img-preview"></div>
<script>
var liNodes = $$('.ct li');
  var imgPre = $('.img-preview');
  liNodes.forEach(function(node){
   node.addEventListener('mouseover', function(e){
    imgPre.innerHTML = '![]('+e.target.dataset.img+')';
   })
  

  })
  

function $(id){
        return document.querySelector(id);
    }
function $$(cla){
        return document.querySelectorAll(cla);
    }


</script>

相关文章

  • 进阶任务9

    题目1: DOM0 事件和DOM2级在事件监听使用方式上有什么区别?### DOM0事件就是把一个方法赋值给一个元...

  • 进阶任务-9

    1.DOM0 事件和DOM2级在事件监听使用方式上有什么区别? 2 .attachEvent与addEventLi...

  • 进阶任务9

    1.DOM0 事件和DOM2级在事件监听使用方式上有什么区别? DOM0级事件监听就是把一个方法赋值给一个元素的事...

  • 进阶-任务9

    DOM0 事件和DOM2级在事件监听使用方式上有什么区别? DOM0 删除DOM0事件btn.onclick = ...

  • 进阶任务9

    课程任务 题目1: DOM0 事件和DOM2级在事件监听使用方式上有什么区别? 题目2: attachEvent与...

  • 进阶任务9:事件

    题目1: DOM0 事件和DOM2级在事件监听使用方式上有什么区别? DOM0事件监听就是把一个处理方式赋值给一个...

  • 进阶任务9(主线任务):事件

    题目1: DOM0 事件和DOM2级在事件监听使用方式上有什么区别? DOM0级事件监听就是把一个方法赋值给一个元...

  • 进阶任务9(主线任务):事件

    题目1: DOM0 事件和DOM2级在事件监听使用方式上有什么区别?DOM0通过 JavaScript 指定事件处...

  • 进阶任务9-事件

    DOM0 事件和DOM2级在事件监听使用方式上有什么区别? DOM0可以通过HTML元素属性或者Javascrip...

  • 任务22-Dom、事件(进阶8,进阶9,进阶10)

    问答题 dom对象的innerText和innerHTML有什么区别?答:innerText和innerHTML都...

网友评论

      本文标题:进阶任务-9

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