前端基础类学习

JS事件

2017-04-10  本文已影响23人  饥人谷_米弥轮

饥人谷事件课件

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

第二种方法事件处理程序被认为是元素的方法,事件处理程序在元素的作用域下运行,所以同一执行上下文中只能存在一种事件处理程序。

141533286861687.png

DOM2级事件的两个方法好处在于在元素作用域下同一执行上下文中可以存在多个事件处理程序

2.attachEvent与addEventListener的区别?

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

在兼容所有浏览器的事件处理程序上主要采用冒泡机制作为事件传播机制。
同时也衍生出了解决当需要在父元素下进行新增的子元素的操作所造成无法触发事件或者事件方法复杂的技巧,如:

    <body>
      <ul>
        <li>01</li>
        <li>02</li>
        <li>03</li>
      </ul>

      <script type="text/javascript">
        function $(id) {
          return document.querySelector(id);
        }
        $('ul').addEventListener('click', function(e) {
          if(e.target.tagName.toLowerCase() === 'li') {
            console.log(e.target.innerHTML);
          }
        });
      </script>
    </body>

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

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

    <ul>
      <li>这里是</li>
      <li>饥人谷</li>
      <li>前端6班</li>
    </ul>

    <script type="text/javascript">
      $('ul').addEventListener('click',function(e){
        if(e.target.tagName.toLowerCase() === 'li') {
          console.log(e.target.innerHTML);
        }
      })

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

6.补全代码,要求:

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

    <ul class="ct">
        <li data-img="http://cdn.jirengu.com/book.jirengu.com/img/11.jpg">鼠标放置查看图片1</li>
        <li data-img="http://cdn.jirengu.com/book.jirengu.com/img/13.jpg">鼠标放置查看图片2</li>
        <li data-img="http://cdn.jirengu.com/book.jirengu.com/img/14.jpg">鼠标放置查看图片3</li>
    </ul>
    <div class="img-preview"></div>

    <script type="text/javascript">
      var ulCt = $('.ct');
      var preview = $('.img-preview');

      ulCt.addEventListener('mouseover',function(e){
        if(e.target.tagName.toLowerCase() === 'li') {
          // console.log(e.toElement.getAttribute('data-img'))
          var address = e.toElement.getAttribute('data-img')
          var imgPreview = document.createElement('img');
          imgPreview.setAttribute('src',address);
          preview.appendChild(imgPreview);
        }
      });

      ulCt.addEventListener('mouseout',function(e){
        if(e.target.tagName.toLowerCase() === 'li') {
          preview.innerHTML = '';
        }
      });

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

8.事件兼容处理程序(github)

  function binEvent(node,type,handler) {
        node['e' + type + handler] = handler;
        node[type + handler] = function(){
          node['e' + type + handler](window.event)
        }
        node.attachEvent('on' + type,node[type + handler]);
   }
上一篇 下一篇

猜你喜欢

热点阅读