事件

2017-08-09  本文已影响0人  Wensx

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

题目2: attachEvent与addEventListener的区别?

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

IE事件冒泡 DOM2事件

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

function stopEvent(e) {
  e.stopPropagation();
}
el.addEventListener('click', stopEvent, false);

将上面函数指定为监听函数,会阻止事件进一步冒泡到el节点的父节点。

该方法不会阻止事件的进一步传播(stopPropagation方法可用于这个目的)。只要在事件的传播过程中(捕获阶段、目标阶段、冒泡阶段皆可),使用了preventDefault方法,该事件的默认方法就不会执行。

// HTML代码为
// <input type="checkbox" id="my-checkbox" />

var cb = document.getElementById('my-checkbox');

cb.addEventListener(
  'click',
  function (e){ e.preventDefault(); },
  false
);

上面代码为点击单选框的事件,设置监听函数,取消默认行为。由于浏览器的默认行为是选中单选框,所以这段代码会导致无法选中单选框。

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

<ul class="ct">
    <li>这里是</li>
    <li>饥人谷</li>
    <li>前端6班</li>
</ul>
<script>
  var list = document.querySelectorAll('.ct li');
  function show() {
      console.log(this.innerText);
  }
  for (var i in list){
      var li = list[i];
      li.addEventListener('click', show)
  }
</script>

题目6: 补全代码,要求:

当点击按钮开头添加时在<li>这里是</li>元素前添加一个新元素,内容为用户输入的非空字符串;当点击结尾添加时在最后一个 li 元素后添加用户输入的非空字符串.
当点击每一个元素li时控制台展示该元素的文本内容。

<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>
    var startButton = document.querySelector('#btn-add-start');
    var endButton = document.querySelector('#btn-add-end');
    var ul = document.querySelector('.ct');
    var content = document.querySelector('.ipt-add-content')

    startButton.addEventListener('click', function () {
    var newLi = document.createElement('li');
    if(/\S+/.test(content.value)) {
      var newContent = document.createTextNode(content.value);
      newLi.appendChild(newContent);
      ul.insertBefore(newLi, ul.firstChild);
    }
  })

  endButton.addEventListener('click', function () {
    if(/\S+/.test(content.value)) {
      var newLi = document.createElement('li');
      var newContent = document.createTextNode(content.value);
      newLi.appendChild(newContent);
      ul.appendChild(newLi)
    }
  })
  ul.addEventListener('click', function (e) {
            console.log(e.target.innerText)
        });
</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>
  var list = document.querySelectorAll('li');
  var imgShow = document.querySelector('.img-preview');
  var img = document.createElement('img');

  for (var i in list){
    list[i].addEventListener('mouseenter',function () {
      var dataImg = this.getAttribute('data-img');
      img.setAttribute('src',dataImg);
      imgShow.appendChild(img);
    });
  }
</script>
上一篇下一篇

猜你喜欢

热点阅读