js的文档对象模型

本文介绍了DOM树的概念,展示了如何通过JavaScript操作HTML文档,包括实例化DOM节点、创建元素、属性管理和节点操作。重点讲解了Document对象模型及其常用API,如getElementById、getElementsByClassName等。
摘要由CSDN通过智能技术生成

  DOM树
    文档:页面就是文档,在DOM中用document表示
    元素:页面标签就是元素,在DOM中用element表示
    节点:网页所有内容就是节点(标签、属性、文本、注释等),在DOM中用node表示
              DOM把以上内容看作对象

  DOM 文档对象模型
    js操作html、xml文档的api
    1998年10月
    IE中的DOM对象是以COM对象的形式实现的

  实例化
    1. 通过dom拿到我们想要的节点
        var myDiv = document.getElementById("myDiv");
        console.log(myDiv);
        var div1 = document.getElementById("div1");
        console.log(div1);

    2. 通过dom创建节点
        // 创建一个li节点
        var node = document.createElement("LI");
        // 创建一个text节点
        var textNode = document.createTextNode("Hello");
        // 将text节点追加到li节点上
        node.appendChild(textNode);
        // 找到id为myDiv的节点
        var myDiv = document.getElementById("myDiv");
        // 将刚刚创建的node节点追加为myDiv的子节点
        myDiv.appendChild(node);
  
  Document类型———表示整个html文档 
    属性 
      body       直接指向body元素
      head       获取html头部内容
      title      获取文档标题
      doctype    获取<!DOCTYPE> 兼容性不太强 很少用
      URL        获取完整的URL
      domain     获取域名
      referrer   获取链接到当前页面的那个页面的url
      images     获取页面所有的img对象 返回值HTMLCollection
      forms      获取所有的form对象 返回值HTMLCollection
      links      获取文档中带有href属性的a元素

    方法
      getElementById("")          
        作用:    通过元素的id获取元素节点
        调用者:document
        参数:    想要获取的元素id
        返回值:  找到的第一个元素,如果没有,返回null
      getElementsByClassName("app app1")
        作用:    通过元素的class name 获取元素节点
        调用者:  document
        参数:    为一个字符串 表示元素的类名 可以由空格隔开
        返回值:  HTMLCollection list 包含一个或多个元素 可以使用数组的操作方式
                  去处理结果
      getElementsByTagName("")
        作用:    通过元素的元素名(标签名)找到对应的元素
        调用者:  document
        参数:    为一个字符串 表示元素的元素名(标签名)
        返回值:  HTMLCollection list 包含一个或多个元素 可以使用数组的操作方式
                  去处理结果
      getElementsByName("")
        作用:    通过元素的name属性找到对应的元素
        调用者:  document
        参数:    为一个字符串 表示元素name
        返回值:  NodeList list 包含一个或多个元素 可以使用数组的操作方式
                  去处理结果

  Element类型
    属性
      id          元素在文档中的唯一标识符
      className   与元素的class特性相对应 可以重复 可以有多个 用空格分割
      title       与元素相关的附加说明信息
      src
      alt
    获取或设置属性
      设置属性
        node.className = "two";   //设置类名第一种方式
        node.setAttribute("class", "three"); //设置类名第二种方式

        setAttribute();
        作用:    给获取到的元素设置属性
        调用者:  要设置属性的元素
        参数:    两个参数 属性名 对应的值
        返回值:
        注意点:  要设置的值存在的话 修改原来的值 不存在的话 添加
      获取属性
        node.getAttribute("class")
        作用:    获取到的相应元素的某个属性
        调用者:   元素
        参数:    属性名
        返回值:  对应的属性值
        注意点:  
      移除属性
        myDiv.removeAttribute("id");
        作用:    移除相应元素的某个属性
        调用者:   元素
        参数:    属性名
        返回值:  
        注意点:  
    创建元素
      createElement();
        作用:    创建一个dom元素节点
        调用者:  document
        参数:    一个参数 ,要创建元素的标签名 在html中不区分大小写  但是在XML中区分大小写
        返回值:
        注意点:  
        var node = document.createElement("LI");
        // 创建一个text节点
        var textNode = document.createTextNode("Hello");
        // 将text节点追加到li节点上
        node.appendChild(textNode);
    兄弟、孩子节点属性
      firstElementChild         某个节点的第一个孩子元素节点
      lastElementChild          某个节点的最后一个孩子元素节点

      nextElementSibling        某个节点的下一个兄弟元素节点
      previousElementSibling    某个节点的上一个兄弟元素节点

      childElementCount         该节点子元素的数量
      innerHtml                 该元素的内容
      textContent               该元素内部的text

  Text类型
    length        // 文本长度
    appendData    
      作用:给文本节点 追加文本
      调用者:文本节点
      参数:要追加的文本内容
      var textNode = document.createTextNode("hello,");
      textNode.appendData("world");
    deleteData(0, 2);
      作用:删除文本
      调用者:文本节点
      参数:两个参数 开始的位置 要删除的数量
    insertData();
      作用:插入文本
      调用者:文本节点
      参数:两个参数 开始的位置 要插入的文本
        var textNode = document.createTextNode("hello,");
        textNode.insertData(6, "world!")
    replaceData();
      作用:替换文本
      调用者:文本节点
      参数:三个参数 开始的位置 要替换文本长度 替换的文本
        var textNode = document.createTextNode("hello,");
        textNode.replaceData(0, 2, "-"); // "-llo,"
    splitText()
      作用:  将一个文本节点分为两个
      调用者:文本节点
      参数: 分割点的位置
      返回值:分割好的后面的文本节点
        var textNode = document.createTextNode("helloworld");
        console.log(textNode); // "hello"
        console.log(textNode.splitText(5)); // "world"
    substringData()
      作用:  提取文本节点中的字符串
      调用者:文本节点
      参数: 两个参数 开始的位置 要提取文本的个数
      返回值:提取出来的字符串
      注意点:不改变原文本
        var textNode = document.createTextNode("helloworld");
        console.log(textNode.substringData(0, 5)); // hello
        console.log(textNode); // "helloworld"
    createTextNode()
      作用:  创建一个文本节点
      调用者:document
      参数: 文本内容
      返回值:
      注意点:
        var textNode = document.createTextNode("helloworld");

  Comment类型
    注释
    方法
      createComment();
      作用:创建注释节点
      var cNode = document.createComment("这是一个注释");
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值