Dom元素操作

2018-07-31  本文已影响48人  小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 $(selector) {
    return document.querySelector(selector);
}
$('.ct').addEventListener('mouseover',function(e){
    if (e.target.tagName.toLowerCase() === 'li'){
      var img = e.target.getAttribute("data-img");      
      $('.img-preview').innerHTML = '<img src="'+img+'">';
    }
  });

二、补全代码,要求:

当点击按钮开头添加时在<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>
//你的代码
</script>
function $(selector){
    return document.querySelector(selector);
  }

$('.ct').addEventListener("click",function(e){
  if(e.target.tagName.toLowerCase() === 'li'){
    console.log(e.target.innerText);
  }
});

$('#btn-add-start').onclick = function(){
  if($('.ipt-add-content').value !== ""){
    var newli = document.createElement('li');
    newli.innerText = $('.ipt-add-content').value;
    $('.ct').prepend(newli);
  }
};

$('#btn-add-end').onclick = function(){
  if($('.ipt-add-content').value !== ""){
    var newli = document.createElement('li');
    newli.innerText = $('.ipt-add-content').value;
    $('.ct').append(newli);
  }
};

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

<ul class="ct">
    <li>这里是</li>
    <li>谷</li>
    <li>班</li>
</ul>
<script>
//todo ...
</script>
function $(selector){
    return document.querySelector(selector);
  }

$('.ct').addEventListener("click",function(e){
  if(e.target.tagName.toLowerCase() === 'li'){
    console.log(e.target.innerText);
  }
});

四、解释DOM2事件传播机制。

DOM2级事件规定事件流包括三个阶段:

五、onlick与addEventListener的区别?

onlick

addEventListener

可以有三个参数:
- 事件处理类型
- 事件处理方法
- 布尔类型,如果是true表示在捕获阶段调用事件处理程序,如果是false,则是在事件冒泡阶段处理
优点:能够绑定多个处理程序,会按照顺序依此执行
缺点:只能通过removeEventListener移除,移除时参数与添加的时候相同。不具备跨浏览器优势。

六、如何获取 DOM 计算后的样式?

获取样式 getComputedStyle

var node = document.querySelector('p')
var color = window.getComputedStyle(node).color
console.log(color)

七、写一个函数,批量操作 css。

function css(node, styleObj){
//todo ..
}
css(document.body, {
  'color': 'red',
  'background-color': '#ccc'
})
function setStyle(node, styleObj) {
     //for-in 遍历对象
     for (var key in styleObj) {
          node.style[key] = styleObj[key]
     }
}

八、列出DOM 元素选取的 API。

getElementById()

getElementsByClassName()

getElementsByTagName()

getElementsByName()

querySelector()

querySelectorAll()

九、如何创建元素?如何添加元素?

createElement()

createTextNode()

createDocumentFragment()

appendChild()

insertBefore()

replaceChild()

replaceChild()接受两个参数:要插入的元素和要替换的元素

上一篇下一篇

猜你喜欢

热点阅读