首页 > 其他分享 >JS节点操作

JS节点操作

时间:2025-01-16 16:58:36浏览次数:3  
标签:box JS ul var 操作 document 节点 btns

目录

1、创建节点

2、创建文本

3、添加节点

4、替换节点

5、删除节点

6、克隆节点

7、创建节点另外几种方式

(1)、element.innerHTML

(2)、 element.innerText

(3)、document.write()


1、创建节点

docment.createElement('节点')

参数:标签名字符串

这些元素原先不存在,是根据需求动态生成的,所以也成为动态创建元素节点,会将创建好的对象作为返回值返回

2、创建文本

document.createTextNode()可以用来创建一个文本节点对象

参数:文本内容字符串,并将新的节点返回

3、添加节点

father.appendChild(child) 追加元素 类似数组中的push()

将一个节点添加到指定父节点的子节点列表的末尾。类似css里面的after伪元素

father.insertBefore(child,指定元素)

将一个节点添加到父节点的指定子节点前面。类似css里面的before伪元素

<body>
    <!-- 
       需求1:在段落p的后面添加一个span标签,添加span的文本内容‘我是一个span’
       需求2:在段落p的前面添加一个h1标签,添加h1的文本内容,‘我是一个h1’
     -->
    <div id="box">
      <p>段落</p>
    </div>
    <button>添加span</button>
    <button>添加h1</button>
    <script>
      var btns = document.querySelectorAll("button");
      var p = document.querySelector("p");
      var box = document.getElementById("box");
      //需求1
      btns[0].onclick = function () {
        // 1.1创建节点
        var span = document.createElement("span");
        // 1.2 创建文本内容
        var spanTest = document.createTextNode("我是一个span");
        //1.3将文本内容放入到span节点里
        span.appendChild(spanTest);
        // 1.2追加节点
        box.appendChild(span);
      };
      //需求2
      btns[1].onclick = function () {
        //   2.1 创建节点
        var h1 = document.createElement("h1");
        //2.2创建h1文本内容
        var h1Test = document.createTextNode("我是一个h1");
        //2.3 将h1Test放入到节点内
        h1.appendChild(h1Test);
        //2.4 添加节点
        box.insertBefore(h1, p);
      };
    </script>
  </body>

4、替换节点

replaceChild()

-可以使用指定的子节点替换已有的子节点

-语法:父节点.replaceChild(新节点,旧节点)

5、删除节点

写法一、father.removeChild(child)

写法二、child.parentNode.removeChild(child)

可以在DOM中删除一个子节点,返回删除的节点

<body>
    <!-- 需求一:点击按钮1,将《金瓶梅》替换为《水浒传》
           需求二:点击按钮2,删除《金瓶梅》
    -->
    <button>按钮1</button>
    <button>按钮2</button>
    <ul>
      <li>《红楼梦》</li>
      <li>《三国演义》</li>
      <li>《西游记》</li>
      <li>《金瓶梅》</li>
    </ul>
    <script>
      var btns = document.querySelectorAll("button");
      var ul = document.querySelector("ul");
      var jpm = ul.children[3];
      btns[0].onclick = function () {
        // 创建《水浒传》节点
        var newLi = document.createElement("li");
        var newLiTest = document.createTextNode("《水浒传》");
        newLi.appendChild(newLiTest);
        // 替换节点
        ul.replaceChild(newLi, jpm);
      };
      btns[1].onclick = function () {
        // 删除节点写法一
        ul.removeChild(jpm);
        // 删除节点写法二
        // jpm.parentNode.removeChild(jpm);
      };
    </script>
  </body>

6、克隆节点

node.cloneNode() 返回调用该方法的节点的一个副本

参数:布尔值

false 只克隆节点本身,不克隆里面的子节点

true 拷贝节点,拷贝内容

<body>
    <!-- 需求:点击按钮克隆div元素-->
    <div id="box">box盒子</div>
    <button>克隆</button>
    <script>
      var box = document.getElementById("box");
      document.querySelector("button").onclick = function () {
        // 克隆节点
        // var newBox = box.cloneNode();
        var newBox = box.cloneNode(true);
        //添加克隆节点
        box.parentNode.appendChild(newBox);
      };
    </script>
  </body>

7、创建节点另外几种方式

(1)、element.innerHTML

允许更改html元素的内容,可以设置或返回表格行的开始和结束标签之间的HTML,可以解析html标签

(2)、 element.innerText

获取或设置元素的文本----以纯文本的方式直接显示,不可以解析html标签

(3)、document.write()

直接将内容写入页面的内容流,但是文档执行完毕,则会导致页面全部重绘

<body>
    <!-- 
    需求1:获取ul里面的li内容
    需求2:在ul里添加《水浒传》到页面中
         innerHTML、document.write()      
    -->
    <button>获取</button>
    <button>添加</button>
    <ul>
      <li>《红楼梦》</li>
    </ul>
    <script>
      var btns = document.querySelectorAll("button");
      var ul = document.querySelector("ul");
      // 需求1
      btns[0].onclick = function () {
        var test1 = ul.innerHTML;
        // console.log(test1, "test1");
        var test2 = ul.innerText;
        // console.log(test2, "test2");
      };
      //需求2
      btns[1].onclick = function () {
        //   第一种写法
        // var li = document.createElement("li");
        // li.innerHTML = "《水浒传》";
        // ul.appendChild(li);
        // 第二种写法
        let liElement=`<li>《水浒传》</li>`
        ul.innerHTML = "ul.innerHTML+liElement";
         // 第三种写法
        let bodyElement=document.body.innerHTML+liElement
        // document.write(bodyElement);
        //第四种
        ul.insertAdjacentHTML('beforebegin',liElement) 
      };
    </script>
  </body>

(3 )、insertAdjacentHTML() /əˈdʒeɪsnt/

insertAdjacentHTML() 是Element的API中的一个方法,可以将字符串文本转化为你想要的节点(Node),并且插入到你想要插入的位置中。而且它并不会向innerHTML一样会替换掉已有的节点,而是会插入到指定位置。

语法:element.insertAdjacentHTML(position,text)

参数1: position顾名思义,就是想要插入的位置,一共有4个固定的值

'beforebegin':元素element自己的前面。

'afterbegin':插入到元素element里面的第一个子节点之前(也就是总是会插入到最前面,例如我插入5个节点,顺序是1、2、3、4、5,那么我就需要以5、4、3、2、1的顺序插入,有一种栈结构先进后出的感觉)。

'beforeend':插入元素element里面的最后一个子节点之后(这个比较容易理解,就是插入到最后一个节点后,例如我插入5个节点,顺序是1、2、3、4、5,那就正常的1、2、3、4、5就好啦,但是注意是在已有节点的后面哦)。

'afterend':元素element自己的后面。

参数2:text文本

可以结合``字符串使用

<body>
      <button>获取</button>
      <button>添加</button>
      <ul>
        <li>《红楼梦》</li>
      </ul>
      <script>
        var btns = document.querySelectorAll("button");
        var ul = document.querySelector("ul");
      
        btns[1].onclick = function () {
           // 第三种写法  insertAdjacentHTML()
          var li = `<li>《水浒传》</li>`;
          ul.insertAdjacentHTML('beforeend',li);
        };
      </script>
    </body>

标签:box,JS,ul,var,操作,document,节点,btns
From: https://blog.csdn.net/qq_46040001/article/details/145187165

相关文章

  • 数组的简单操作
    数组的简单操作publicclassarrayDemo03{publicstaticvoidmain(String[]args){int[]array={1,2,3,4,5};//打印数组元素for(inti=0;i<array.length;i++){System.out.println(array[i]);}//......
  • Jsoncpp的安装与使用方式
    JsonCpp是一个C++库,用于解析和生成JSON数据。它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式。安装Jsoncpp我们可以输入以下命令安装jsoncpp库。sudoyuminstall-yjsoncpp-devel安装时默认安装动态库。头文件存储在/usr/include/jsoncpp/json中。......
  • Go操作MongoDB
    NoSQL泛指非关系型数据库,如mongo,redis,HBase。mongo使用高效的二进制数据存储,文件存储格式为BSON(一种json的扩展,比json性能更好,功能更强大)。MySQL中表的概念在mongo里叫集合(collection),MySQL中行的概念在mongo中叫文档(document),一个文档看上去像一个json。官方官网官......
  • 前端新手如何用vite构建小程序中使用的模块(以AES加密模块crypto-js为例)
    如果你只是想简单地把在vite项目中使用的模块引入到小程序中,不妨试试库模式。以crypto-js为例,你需要写两个JS文件:一个是构建脚本,类似于vite.config.js;//build.cjsconst{build}=require('vite'),path=require('path');build({publicDir:false,configFile:false......
  • 【开源免费】基于SpringBoot+Vue.JS林业产品推荐系统(JAVA毕业设计)
    本文项目编号T139,文末自助获取源码\color{red}{T139,文末自助获取源码}......
  • 原生JS实现一个日期选择器(DatePicker)组件
    这是通过原生HTML/CSS/JavaScript完成一个日期选择器(datepicker)组件,一个纯手搓的组件的开发。主要包括datepicker静态结构的编写、日历数据的计划获取、组件的渲染以及组件事件的处理。根据调用时的时间格式参数,可以控制短日期格式或长日期格式。实现效果(短日期格式)实现效果......
  • Json 序列化,将对象序列化为Json字符串(此Json序列化,是“不安全的放松JSON转义”,即不会
    ///<summary>///Json序列化帮助类///</summary>publicclassJsonSerializerHelper{///<summary>///将对象序列化为Json字符串(此Json序列化,是“不安全的放松JSON转义”,即不会将物特殊符号和中文进行转码)///</summary>///<paramname="obj"></param>......
  • 如何在小程序中优雅地使用 three.js
    项目官网:Three.jsPlatformAdapter目录成果展示兼容性Three.js版本Loader支持快速上手从模板开始已有项目集成创建一个场景成果展示目前仅支持在微信小程序中使用,后续会兼容到微信小游戏/其他平台小程序/小游戏中。示例的微信小程序,包含了300余个three......
  • JS — 输入与输出
    输入与输出输入:从HTML与用户的交互中输入信息,例如通过input、textarea等标签获取用户的键盘输入,通过click、hover等事件获取用户的鼠标输入。例如:<body>输入:<textareaclass="input"name=""id=""cols="30"rows="10"></textarea><......
  • 深入探索Vue.js 3中基于Composition API的动态组件开发
    在前端开发中,组件是构建用户界面的基础,而Vue.js作为一种流行的前端框架,也提供了灵活强大的组件机制。在本文中,我们将深入探索基于Vue.js3的CompositionAPI,开发一个动态组件加载的技术方案。这项技术对于那些需要高可维护性和按需加载的应用来说尤其重要。什么是动态组件加......