DOM编程

DOM编程

what

主要是对页面中标签的增删改查。

文档对象模型(Document Object Model,简称 DOM),是W3C组织推荐的处理可扩展标记语言的标准编程接口。在网页上,组织页面(或文档)的对象被组织在一个树形结构中。

why

学习DOM操作就是操作页面中的 标签/节点/元素/标记 的

对节点的操作

what:什么是节点?

  • 文档是一个文档节点。(页面中的汉字、空格符、特殊符号)
  • 所有的HTML元素都是 元素/标签节点
  • 所有HTML属性都是属性节点
  • 文本插入到HTML元素是 文本节点
查询节点

想要操作页面中的某一个/某一类 标签,要先拿到这些标签

get系列
document.getElementById() id名
document.getElementsByClassName() 根据类名
document.getElementsByName() 不常用 根据name属性
document.getElementsByTagName() 根据标签名
query系列
document.querySelector() 根据选择器 获取 一个
document.querySelectorAll() 根据选择器 获取 全部

增加节点(插入节点)
名称 含义
document.createElement(标签名) 创建一个节点
父.insertBefore(新标签,哪个标签之前) 在哪个标签之前插入节点
父.appendChild(新标签) 在父节点的里边追加子节点
cloneNode() 复制节点,如果参数为true,还会复制当前节点的子孙节点,否则只复制当前节点。

步骤:

  • 创造标签——此时没有样式 创建
  • 美化——设置样式,添加内容 美化
  • 添加——将造好的标签添加到该添加的地方 添加
<script>
        /*
            节点标签从哪里来?要放在哪里?
            1.创建
            document.createElement('标签名字')
            2.美化
            - 内容样式
            - 样式修饰
            - 是否存在子元素
            3.添加
             父元素.appendChild(子元素)
        */
        //创建
        var div_=document.createElement('div');
        //美化
        div_.className='box';
        div_.innerText="你好"
        //添加
        document.body.appendChild(div_);
		//法二:
        document.body.innerHTML+=`

姓名:

`
script>
  • 创建一个标签,将其追加到最后一个父节点后面,成为最后一个父节点(createElement+appendChild)
<body>
   <div id='max'>
    <p>nihao1p>
    <p>nihao2p>
    <p id="third">nihao3p>
    <p>nihao4p>
    <p>nihao5p>
   div>
    <script>
        //通过创建新元素添加新的元素:添加到div的后面
        var newNode=document.createElement('p');
        newNode.innerText="hahhahhha";
        document.body.appendChild(newNode);
    script>
body>
  • 将标签插入到指定的父节点里面(createElement+appendChild)
<body>
   <div id='max'>
    <p>nihao1p>
    <p>nihao2p>
    <p id="third">nihao3p>
    <p>nihao4p>
    <p>nihao5p>
   div>
    <script>
        //将标签插入到 指定父节点里面
        var newNode2=document.createElement('p')
        newNode2.innerText="你好"
        max.appendChild(newNode2);
    script>
body>
  • 将创建的节点插入到指定的父节点里面指定的标签之前(createElement+insertBefore)
<body>
   <div id='max'>
    <p>nihao1p>
    <p>nihao2p>
    <p id="third">nihao3p>
    <p>nihao4p>
    <p>nihao5p>
   div>
    <script>
        //将标签插入到指定标前面
        var newNode3=document.createElement('button');
        newNode3.innerText='点击'
        max.insertBefore(newNode3,document.querySelector('third'));
    script>
body>
  • 克隆
<body>
   <div id='max'>
    <p>nihao1p>
    <p>nihao2p>
    <p id="third">nihao3p>
    <p>nihao4p>
    <p>nihao5p>
   div>
    <script>
                //克隆
                //值为true时:拷贝该元素和其所有子元素
                //值为false时:只拷贝该元素
                //值为空时:默认为false,只拷贝该元素
               var newNode4=max.cloneNode(true);
               document.body.appendChild(newNode4);
    script>
body>
删除节点
名称 含义
父.removeChild(子标签) 删除指定的子标签/子节点
自己.remove() 删除自身
<div id="box">jklsa;ojff,vdiv>
    <button onclick="rem()">删除button>

    <script>
        function rem(){
           box.remove();//自己删除自己(目标节点自删)
          // document.body.removeChild(box);//通过父节点删除目标节点(子节点)
        }
    script>
修改节点(更新节点)
名称 含义
parent.replaceChild(新标签, 旧标签); 将父标签中的旧标签用新标签替换掉

节点具有的属性(查)

节点元素属性

名称 含义
childNodes 所有直接子节点(文本节点和元素节点)——一般不用
children 所有元素子节点——获取所有的子标签——只要标签
firstElementChild 第一个元素节点(不一定是标签)
firstChild 第一个子节点,标签节点
lastElementChild 最后一个元素节点(不一点是标签)
lastChild 最后一个子节点,标签节点
parentNode 父节点
nextSibling 返回当前元素紧跟的下一个同级节点(包含文本/标签等)
nextElementSibling 返回指定元素之后的下一个兄弟元素节点(相同节点树层中的下一个元素节点)。(不包含标签)
previousSibling 返回当前元素上一个节点紧挨着的
previousElementSibling 返回指定元素的前一个兄弟元素(相同节点树层中的前一个元素节点)(不包含标签)
value 文本框的value值
id 标签的id属性值
name 表单元素的name属性值
className class属性值
innerHTML 标签中的所有内容(包含标签)
outerHTML 包含标签本身以及标签体
innerText 标签中的所有文本内容(不包含标签本身)
getAttribute(“属性名”) 获取标签属性
setAttribute(“属性名”,“属性值”) 为标签设置属性值,还可以设置自定义属性

修改本身就有的属性 只要能直接 . 出来 就表示 . 出来的属性都是本身就有的(系统规定的)

名称 含义
nodeValue 节点值 (文本节点的值)
nodeType 节点类型。1标签节点 2 属性节点 3文本节点
nodeName 节点名称
  • 节点元素属性
<body>
    <div id="max">
        <p>1p>
        <p>2p>
        <p>3p>
        <p id="p">4p>
        <p>5p>
    div>

    <script>
        //获取元素中所有的子节点,包含文本节点,例如:空格(一般不用)——childNodes
        console.log(max.childNodes);
        //获取所有的子元素,只要标签
        console.log(max.children);
        //获取第一个子元素
        console.log(max.firstChild);
        //获取第一个标签节点
        console.log(max.firstElementChild);
        //获取最后一个子元素
        console.log(max.lastChild);
        //获取最后一个子标签
        console.log(max.lastElementChild);
        //获取元素的父节点
        console.log(max.parentNode);
        //获取下一个兄弟节点
        console.log(p.nextElementSibling);
        //获取上一个兄弟节点
        console.log(p.previousElementSibling);
    script>
body>

你可能感兴趣的:(前端,javascript,服务器)