进阶任务-9

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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容