Web APIs---4. DOM(3)

2021-01-15 18:12

阅读:531

标签:lin   需求   支持   更新   sel   输入   ext   mamicode   创建   

5 节点操作

5.1 为什么学习节点操作

技术图片

5.2 节点概述

技术图片

一般情况下,节点至少拥有节点类型(nodeType)、节点名称(nodeName)、节点值(nodeValue)这三个基本属性


    
    
我是div
我是span
  • 我是li
  • 我是li
  • 我是li
  • 我是li
x

查看部分属性:
技术图片

  • 元素节点的nodeType为1(常用)
  • 属性节点的nodeType为2
  • 文本节点的nodeType为3(包含文字空格换行等)

5.3 节点层级

技术图片

父级节点

node.parentNode

    
    
我是div
我是span
  • 我是li
  • 我是li
  • 我是li
  • 我是li
x

子节点

  • 标准:
parentNode.childNodes

    
    
我是div
我是span
  • 我是li
  • 我是li
  • 我是li
  • 我是li
  1. 我是li
  2. 我是li
  3. 我是li
  4. 我是li
  • 非标准:
parentNode.children//可以得到所有的子元素节点  是一个只读属性  返回一个伪数组

    
    
我是div
我是span
  • 我是li
  • 我是li
  • 我是li
  • 我是li
  1. 我是li
  2. 我是li
  3. 我是li
  4. 我是li
子节点的相关操作:获取第一个子元素和最后一个子元素
parentNode.firstChild  //返回第一个子节点,找不到则返回null。同样也是包含所有的节点
parentNode.lastChild  //返回最后一个子节点,找不到则返回null。同样也是包含所有的节点
parentNode.firstElementChild  //返回第一个子节点,找不到则返回null。只包含元素节点
parentNode.lastElementChild  //返回最后一个子节点,找不到则返回null。只包含元素节点

注意:后两个方法有兼容性问题,ie9以上才支持


    
  1. 我是li1
  2. 我是li2
  3. 我是li3
  4. 我是li4

案例:下拉菜单

技术图片

  • 导航栏里面的li都要有鼠标经过的效果,所以需要循环注册鼠标事件
  • 核心原理:当鼠标经过li里面的第二个孩子(ul)显示,当鼠标离开,则ul隐藏。

    

样式内容省略

兄弟节点


    
我是div
我是span
//4. node.previousElementSibling 返回当前元素的上一个兄弟元素节点,找不到则返回null。 console.log(div.previousElementSibling); //null 因为div上面没有兄弟了 //后两个方法依然有兼容性问题,ie9以上才支持 //解决方法:自己封装一个函数(了解) function getnextElementSibling(element){ var el = element; while(el = el.nextSibling) { if(el.nodeType == 1) { return el; } } return null; }

5.4 创建节点 和添加节点

  • 创建
document.creatElement('tagName')

document.creatElement()方法创建由tagName指定的HTML元素。因为这些元素原先不存在,是我们根据需求动态生成的,所以我们也称为动态创建元素节点。

  • 添加
node.appendChild(child)

node.appendChild()方法将一个节点添加到指定父节点的子节点列表的末尾。类似于css元素里的after伪元素。

node.insertBefore(child,指定元素)

node.insertBefore()方法将一个节点添加到父节点指定子节点前面。类似于css里面的before伪元素


    
  • 123

技术图片

技术图片

案例:简单版发布留言案例

技术图片

  • 思路: 当点击按钮之后就动态创建一个li,之后再把li创建到ul之中就可以了
  • 在创建li的同时,把文本域里面的值通过li.innerHTML赋值给li
  • 如果想要新的留言后面显示就用appendChild,如果想要前面显示就用insertBefore

    
    

    样式省略

    Web APIs---4. DOM(3)

    标签:lin   需求   支持   更新   sel   输入   ext   mamicode   创建   

    原文地址:https://www.cnblogs.com/deer-cen/p/12237812.html


    评论


    亲,登录后才可以留言!