事件

2017-02-01  本文已影响0人  BAMO

1.DOM事件和DOM2级在事件监听使用方式上有啥区别?

事件监听器也叫事件处理程序,是为了响应某个事件的方法

 <input type="button" value="Click Here" onclick="alert('Clicked!')">

2.JavaScript指定事件处理程序
把一个方法赋值给一个元素的事件处理程序属性

<input id="btnClick" type="button" value="Click Here2">
<body>
<script>
var btnClick=document.getElementById('btnClick');
btnClick.onclick=function shoeMessage(){
    alert(this.id);
}
</script>

2.attachEvent和addEventListener的区别是什么?

addEventListener: 是DOM2级获取事件处理程序的方法,它包含三个参数(事件类型、事件处理方法、布尔参数true/false-默认值为false即是冒泡阶段触发)
attachEvent:IE浏览器事件处理程序方法,同时接收两个参数:(事件处理程序名称、事件处理程序方法)

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

IE事件冒泡:从点击最具体的逐步往外冒泡,IE有且仅有事件冒泡机制
DOM2级事件:包含事件捕获阶段、处于目标阶段、事件冒泡阶段,大部分浏览器都支持DOM2事件流,IE除外;它包含的三个参数(事件类型、事件方法、布尔值)中的布尔值决定了该方法在那个阶段触发;默认值false在冒泡阶段触发,true在捕获阶段触发。

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

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

<ul class="ct">
<li>这里是</li>
<li>饥人谷</li>
<li>前端6班</li>
</ul>
<script>
//todo ...
</script>

代码

function $(e){
    if(document.querySelectorAll(e).length > 1){
        return document.querySelectorAll(e);
    }else{
        return document.querySelector(e);
    }
}
var li = $('li')
for(var i = 0; i < li.length; i ++){
    li[i].addEventListener('click', function(){
        console.log(this.innerText)
    })
}

6.补全代码,要求

代码

// 封装一个函数,用来获取相对应的DOM-node
function $(ele){
if(document.querySelectorAll(ele).length>1){
    return document.querySelectorAll(ele)
}
else{
    return document.querySelector(ele)
}
}


var star=$('#btn-add-start');
var end=$('#btn-add-end');
var content=$('.ipt-add-content');
var ct=$('.ct');
var li=$('.ct>li');



// 点击尾部添加

end.addEventListener('click',function(){
var li=document.createElement('li');
ct.appendChild(li);
li.innerText=content.value;
content.value='';  //归零清空输入框内容
})

// 点击头部添加

star.addEventListener('click',function(){
var li=document.createElement('li');
ct.insertBefore(li,ct.firstChild);
li.innerText=content.value;
content.value='';
})

// 点击console文本内容
li.forEach(function(ele){
ele.addEventListener('click',function(){
    console.log(ele.innerText)
    })

})

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

    <ul class="ct">
    <li data-img="1.png">鼠标放置查看图片1</li>
    <li data-img="2.png">鼠标放置查看图片2</li>
    <li data-img="3.png">鼠标放置查看图片3</li>
    </ul>
    <div class="img-preview"></div>
    <script>
    //你的代码
    </script>

代码

function $(ele){
        if(document.querySelectorAll(ele).length>0){
            return document.querySelectorAll(ele);
        }
        else{
            return document.querySelector(ele);
        }

    }


    var ct=$('.ct');
    var ImgPreview=$('.img-preview');
    var list=$('.ct>li');


    list.forEach(function(ele){


        
        ele.addEventListener('mouseenter',function(){
            var img=document.createElement('img');
            img.src=ele.getAttribute('data-img');
            ImgPreview[0].appendChild(img);
        })
        ele.addEventListener('mouseleave',function(ele){
            ImgPreview[0].innerHTML=''
        })
    })
上一篇 下一篇

猜你喜欢

热点阅读