当前位置: 首页 > article >正文

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+=`<div class='box2'><p>姓名:<span></span></p></div>`
    </script>
  • 创建一个标签,将其追加到最后一个父节点后面,成为最后一个父节点(createElement+appendChild)
<body>
   <div id='max'>
    <p>nihao1</p>
    <p>nihao2</p>
    <p id="third">nihao3</p>
    <p>nihao4</p>
    <p>nihao5</p>
   </div>
    <script>
        //通过创建新元素添加新的元素:添加到div的后面
        var newNode=document.createElement('p');
        newNode.innerText="hahhahhha";
        document.body.appendChild(newNode);
    </script>
</body>
  • 将标签插入到指定的父节点里面(createElement+appendChild)
<body>
   <div id='max'>
    <p>nihao1</p>
    <p>nihao2</p>
    <p id="third">nihao3</p>
    <p>nihao4</p>
    <p>nihao5</p>
   </div>
    <script>
        //将标签插入到 指定父节点里面
        var newNode2=document.createElement('p')
        newNode2.innerText="你好"
        max.appendChild(newNode2);
    </script>
</body>
  • 将创建的节点插入到指定的父节点里面指定的标签之前(createElement+insertBefore)
<body>
   <div id='max'>
    <p>nihao1</p>
    <p>nihao2</p>
    <p id="third">nihao3</p>
    <p>nihao4</p>
    <p>nihao5</p>
   </div>
    <script>
        //将标签插入到指定标前面
        var newNode3=document.createElement('button');
        newNode3.innerText='点击'
        max.insertBefore(newNode3,document.querySelector('third'));
    </script>
</body>
  • 克隆
<body>
   <div id='max'>
    <p>nihao1</p>
    <p>nihao2</p>
    <p id="third">nihao3</p>
    <p>nihao4</p>
    <p>nihao5</p>
   </div>
    <script>
                //克隆
                //值为true时:拷贝该元素和其所有子元素
                //值为false时:只拷贝该元素
                //值为空时:默认为false,只拷贝该元素
               var newNode4=max.cloneNode(true);
               document.body.appendChild(newNode4);
    </script>
</body>
删除节点
名称含义
父.removeChild(子标签)删除指定的子标签/子节点
自己.remove()删除自身
<div id="box">jklsa;ojff,v</div>
    <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属性值
classNameclass属性值
innerHTML标签中的所有内容(包含标签)
outerHTML包含标签本身以及标签体
innerText标签中的所有文本内容(不包含标签本身)
getAttribute(“属性名”)获取标签属性
setAttribute(“属性名”,“属性值”)为标签设置属性值,还可以设置自定义属性

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

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

http://www.kler.cn/a/562948.html

相关文章:

  • 静态库和动态库的制作
  • kafka-leader -1问题解决
  • 索提诺比率(Sortino Ratio):更精准的风险调整收益指标(中英双语)
  • SLAM文献之-IMLS-SLAM: scan-to-model matching based on 3D data
  • Pytorch使用手册—使用TACOTRON2进行文本到语音转换(专题二十四)
  • 二分法 ──── 算法3
  • Spring Boot @Component注解介绍
  • angular轮播图
  • git拉取远程分支到本地分支
  • 第6章 数据工程(二)
  • 【华为OD机考】华为OD笔试真题解析(14)--开心消消乐
  • ComfyUI:Stable Diffusion 及 LoRA、VAE 、ControlNet模型解析
  • 洛谷每日1题-------Day4__陶陶摘苹果
  • 免费使用SCI润色神器QuillBot
  • 软件工程----敏捷模型
  • 岳阳市美术馆预约平台(小程序论文源码调试讲解)
  • Java基础关键_012_包装类
  • WPF10绑定属性
  • 重启 nginx
  • 36. Spring Boot 2.1.3.RELEASE 中实现监控信息可视化并添加邮件报警功能