学习 事件 的总结

2017-08-16  本文已影响25人  osborne

1- DOM0 事件和DOM2级在事件监听使用方式上的区别

var btnClick = document.getElementById('btnClick');
btnClick.onclick = function handler() {
    alert(this.id);
}; //bthClick
var btnClick = document.getElementById('btnClick');
btnClick.addEventListener('click', function() {
    alert(this.id);
}, false); //btnClick

2- attachEvent与addEventListener的区别

3- IE事件冒泡和DOM2事件传播机制

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

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

<ul class="ct">
    <li>这里是</li>
    <li>饥人谷</li>
    <li>前端6班</li>
</ul>
<script>
//todo ...
</script>
<ul class="ct">
    <li>这里是</li>
    <li>饥人谷</li>
    <li>前端9班</li>
</ul>
<script>
var lis = document.querySelectorAll('.ct li');
for(var i = 0; i < lis.length; i++){
    lis[i].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>
//你的代码
</script>
<div>
    <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>
</div>
<script>
    var ul = document.querySelector(".ct");
    var btn_add_start = document.querySelector("#btn-add-start");
    var btn_add_end = document.querySelector("#btn-add-end");
    var content = document.querySelector(".ipt-add-content");
    btn_add_start.onclick = function (event) {
        if(content.value.length < 1 ){
            alert('请输入项目名称');
        }else{
            var newNode = document.createElement("li");
            newNode.innerHTML = content.value;
            ul.insertBefore(newNode, ul.firstElementChild);
            content.value = "";
        }
    }
    btn_add_end.onclick = function (event) {
        if(content.value.length < 1 ){
            alert('请输入项目名称');
        }else{
            var newNode = document.createElement("li");
            newNode.innerHTML = content.value;
            ul.appendChild(newNode);
            content.value = "";
        }
    }
    function outputInnerText(event){
        var target = event.target;
        console.log(target.innerHTML);
    }
    ul.addEventListener("click", outputInnerText);
</script>

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>
<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>
var preview = document.querySelector('.img-preview');
var ct = document.querySelector('.ct');
ct.addEventListener('mouseover', function(e){
  if(e.target.tagName.toLowerCase() === 'li'){
  var img = document.createElement('img');
  img.src = e.target.getAttribute('data-img');
  preview.appendChild(img); 
  }
})
ct.addEventListener('mouseout', function(e){
  if(e.target.tagName.toLowerCase() === 'li'){
  preview.innerHTML = '';
  }
});
</script>
- 其他参考资料:event事件
上一篇 下一篇

猜你喜欢

热点阅读