事件(进阶9)

2017-01-29  本文已影响0人  饥人谷_js_chen

题目1: DOM0 事件和DOM2级在事件监听使用方式上有什么区别?

    var btnClick = document.getElementById('btnClick');
    //添加事件
    btnClick.onclick = function showMessage() {
        alert(this.id);
    };
    //删除事件
    btnClick.onclick = null;
const $ = (str) => document.querySelector(str);
//添加事件
$('.btn').addEventListener('click', fn);
$('#re').addEventListener('click', ()=>{
    $('.btn').removeEventListener('click',fn);//删除事件
});

题目2: attachEvent与addEventListener的区别?

题目3: 解释IE事件冒泡和DOM2事件传播机制?

题目4:如何阻止事件冒泡? 如何阻止默认事件?

  1. stopPropagation()
  2. preventDefault()

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

<ul class="ct">
    <li>这里是</li>
    <li>饥人谷</li>
    <li>前端6班</li>
</ul>
<script>
//todo ...
const $ = (str) => document.querySelector(str);
const $$ = (str) => document.querySelectorAll(str);
$('ul.ct').addEventListener('click',(e)=>{
    if(e.target.tagName.toLowerCase()==="li"){
        console.log(e.target.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>
//你的代码
const $ = (str) => document.querySelector(str);
const $$ = (str) => document.querySelectorAll(str);
const nodeInput = $('.ipt-add-content');
const btnAddStart = $('#btn-add-start');
const btnAddEnd = $('#btn-add-end');
const nodeUl = $('ul.ct');
nodeUl.addEventListener('click',(e)=>{
    if(e.target.tagName.toLowerCase()==="li"){
        console.log(e.target.innerText);
    }
});
btnAddStart.addEventListener('click',()=>{
    let text = nodeInput.value;
    if(/^\s*$/.test(text)){
        alert("内容不能为空!");
    } else {
        nodeLi = document.createElement('li');
        nodeLi.innerText=text;
        nodeUl.insertBefore(nodeLi,nodeUl.firstChild);
    }
});
btnAddEnd.addEventListener('click',()=>{
    let text = nodeInput.value;
    if(/^\s*$/.test(text)){
        alert("内容不能为空!");
    } else {
        nodeLi = document.createElement('li');
        nodeLi.innerText=text;
        nodeUl.appendChild(nodeLi);
    }
});
</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>
//你的代码
const $ = (str) => document.querySelector(str);
const $$ = (str) => document.querySelectorAll(str);
const nodeUl = $('.ct'),
    nodeDiv = $('.img-preview');
nodeUl.addEventListener('click', (e) => {
    if (e.target.tagName.toLowerCase() === 'li') {
        let imgPath = e.target.getAttribute('data-img');
        nodeDiv.style.backgroundImage = 'url(' + imgPath + ')';
    }
});
</script>

题目8: 在 github 上创建个人项目,把视频里事件兼容的函数写法放入项目,在 Readme.md里描述项目(选做题目)

github地址

上一篇 下一篇

猜你喜欢

热点阅读