进阶任务-9

2017-09-02  本文已影响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的区别?

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

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

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>
上一篇下一篇

猜你喜欢

热点阅读