事件

1.DOM0 事件和DOM2級在事件監(jiān)聽使用方式上有什么區(qū)別?

  • DOM0:事件處理程序是在元素的作用域里運行,只能存在一個處理程序
  • DOM2級:可以給同一個元素添加多個處理事件

2.attachEvent與addEventListener的區(qū)別?

  • 參數(shù):addEventListener有三個參數(shù),attachEvent只有兩個;addEventListener的第一個參數(shù)為事件類型,attachEvent第一個參數(shù)指明的是事件處理函數(shù)名稱
  • 事件處理階段不同:attachEvent的事件處理程序只能發(fā)生在冒泡階段,addEventListener可以選擇
  • 作用域:addEventListener的作用域是元素本身,this是指觸發(fā)元素,而attachEvent事件處理程序會在全局變量內(nèi)運行,this是window
  • 事件處理程序執(zhí)行順序:通過attachEvent給某元素添加多個對于同一事件的處理程序時,它們的執(zhí)行順序無規(guī)律; 對于addEventListener的事件處理程序則是按照添加順序執(zhí)行。

3.解釋IE事件冒泡和DOM2事件傳播機制?

  • IE的事件冒泡:事件開始時由最具體的元素接收,然后逐級向上傳播到較為不具體的元素
Paste_Image.png
  • DOM2事件傳播機制:DOM2級事件規(guī)定事件流包括三個階段,事件捕獲階段,處于目標(biāo)階段,事件冒泡階段,首先發(fā)生的是事件捕獲,為截取事件提供機會,然后是實際目標(biāo)接收事件,最后是冒泡階段
Paste_Image.png

4.如何阻止事件冒泡? 如何阻止默認(rèn)事件?

  • stopPropagation()
  • preventDefault()

5.有如下代碼,要求當(dāng)點擊每一個元素li時控制臺展示該元素的文本內(nèi)容。不考慮兼容

<ul class="ct">
    <li>這里是</li>
    <li>饑人谷</li>
    <li>前端6班</li>
</ul>
<script>
    var lists = $$('.ct li');

    for(var i = 0; i<lists.length; i++)
    {
        lists[i].addEventListener('click', function(e){
            console.log(e.target.innerText);
        })
    }

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

6.補全代碼,要求:

  • 當(dāng)點擊按鈕開頭添加時在<li>這里是</li>元素前添加一個新元素,內(nèi)容為用戶輸入的非空字符串;當(dāng)點擊結(jié)尾添加時在最后一個 li 元素后添加用戶輸入的非空字符串.
  • 當(dāng)點擊每一個元素li時控制臺展示該元素的文本內(nèi)容。
<ul class="ct">
    <li>這里是</li>
    <li>饑人谷</li>
    <li>任務(wù)班</li>
</ul>
<input class="ipt-add-content" placeholder="添加內(nèi)容"/>
<button id="btn-add-start">開頭添加</button>
<button id="btn-add-end">結(jié)尾添加</button>
<script>
    function $$ (id)
    {
        return document.querySelectorAll(id);
    }

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

    var addBtnStar = $('#btn-add-start');
    var addBtnEnd = $('#btn-add-end');
    var inputEle = $('.ipt-add-content');
    var ulEle = $('.ct');
    var lists = $$('.ct > li');
    var newEle;

    for(var i = 0; i < lists.length; i++)
    {
        lists[i].addEventListener('click', function(e) {
            console.log(e.target.innerText);
        })
    }

    inputEle.addEventListener('change', function(e){
        newEle = document.createElement('li');
        newEle.innerHTML = this.value;
        console.log(newEle);
    })

    addBtnStar.addEventListener('click', function(e){
        if (newEle) 
        {
            var temp = newEle.cloneNode(true);
            ulEle.insertBefore(temp, ulEle.firstChild);
            temp.addEventListener('click', function(e) {
                console.log(e.target.innerText);
            })
        }
    })

    addBtnEnd.addEventListener('click', function(e){
        if (newEle) 
        {
            var temp = newEle.cloneNode(true);
            ulEle.appendChild(temp);
            temp.addEventListener('click', function(e) {
                console.log(e.target.innerText);
            })
        }
    })
</script>

7.補全代碼,要求:當(dāng)鼠標(biāo)放置在li元素上,會在img-preview里展示當(dāng)前l(fā)i元素的data-img對應(yīng)的圖片。

<ul class="ct">
    <li data-img="http://omph2coqc.bkt.clouddn.com/48768163_p1_master1200.jpg
        ">鼠標(biāo)放置查看圖片1</li>
    <li data-img="http://omph2coqc.bkt.clouddn.com/52929282_p11_master1200.jpg">鼠標(biāo)放置查看圖片2</li>
    <li data-img="http://omph2coqc.bkt.clouddn.com/49445956_p3_master1200.jpg">鼠標(biāo)放置查看圖片3</li>
</ul>
<div class="img-preview"></div>
<script>
    function $$ (id)
    {
        return document.querySelectorAll(id);
    }

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

    var ct = $('.ct')
    var lists = $$('.ct > li');
    var preview = $('.img-preview');
    //var img = document.createElement('img');

    for(var i = 0; i < lists.length; i++)
    {
        lists[i].addEventListener('mouseenter', function(){
            var dataImg = this.getAttribute('data-img');
            preview.innerHTML = '![](' + dataImg + ')'
        });     
    }
</script>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • DOM0級和DOM2級在事件監(jiān)聽使用方式上有什么區(qū)別? DOM0級事件監(jiān)聽:用JavaScript指定事件處理程序...
    LeeoZz閱讀 435評論 0 1
  • 問答 一、dom對象的innerText和innerHTML有什么區(qū)別? innerTextinnerText是一...
    婷樓沐熙閱讀 471評論 0 0
  • 題目1: DOM0 事件和DOM2級在事件監(jiān)聽使用方式上有什么區(qū)別? Dom0級Dom0級事件處理程序是將一個函數(shù)...
    QQQQQCY閱讀 393評論 0 0
  • 一、DOM0 事件和DOM2級在事件監(jiān)聽使用方式上有什么區(qū)別? DOM0級事件 了解DOM0級事件之前,先了解下H...
    任少鵬閱讀 289評論 0 1
  • 然后就是去往西天取經(jīng)的路上,有形形色色的妖怪都是孫悟空的外孫,經(jīng)常跑到人家肚子里,然后不懷好意是說:叫孫外公 哈...
    經(jīng)典影視天堂閱讀 431評論 0 0

友情鏈接更多精彩內(nèi)容