首页 > 编程语言 >JavaScript ——节点操作

JavaScript ——节点操作

时间:2025-01-14 21:03:38浏览次数:3  
标签:JavaScript ul 添加 var 操作 document 节点 btns

节点操作

1. 创建节点

document.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 spanText = document.createTextNode("我是一个span");

        //1.3将文本内容放入到span节点里

        span.appendChild(spanText);

        // 1.2追加节点

        box.appendChild(span);

      };

      //需求2

      btns[1].onclick = function () {

        //   2.1 创建节点

        var h1 = document.createElement("h1");

        //2.2创建h1文本内容

        var h1Text = document.createTextNode("我是一个h1");

        //2.3 将h1Text放入到节点内

        h1.appendChild(h1Text);

        //2.4 添加节点

        box.insertBefore(h1, p);

      };

    </script>

  </body>

  1. 创造节点:使用 document.createElement 创建元素节点。
  2. 创造 / 完善节点内容:通过 document.createTextNode 创建文本节点并添加到元素节点。
  3. 确定节点和内容的关系:将文本节点作为子节点添加到元素节点。
  4. 确定新节点与原有内容的关系:通过 appendChild 或 insertBefore 方法确定新节点在文档结构中的位置。

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 newLiText = document.createTextNode("《水浒传》");

        newLi.appendChild(newLiText);

        // 替换节点

        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 () {

        //   第一种写法(创建标签并用innerHTML直接修改新标签内容)

        // var li = document.createElement("li");

        // li.innerHTML = "《水浒传》";

        // ul.appendChild(li);

        // 第二种写法(不创建新标签,直接用字符串拼接方法’+’ 修改元素自身的innerHTML内容)

        let liElement = `<li>《水浒传》</li>`;

        ul.innerHTML = ul.innerHTML + liElement;

        // 第三种写法 (通过document.write()直接输出内容 )

        // 这里注意document.write在文档加载完成后使用会重绘页面,此写法需谨慎

        let bodyElement = document.body.innerHTML + liElement;

        document.write(bodyElement);

        //第四种 利用(insertAdjacentHTML() )

        ul.insertAdjacentHTML('beforebegin', liElement);

      };

    </script>

  </body>

(4)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>

标签:JavaScript,ul,添加,var,操作,document,节点,btns
From: https://blog.csdn.net/2301_76428778/article/details/145146954

相关文章

  • JavaScript详解 ——函数
    1、函数的概念在JS里面,可能会定义非常多的相同代码或者功能相似的代码,这些代码需要大量重复使用函数:就是封装一段可被重复调用执行的代码块。通过代码块可以实现在需要的的重复使用,使用typeof检查一个函数对象时,会返回function函数的封装是把一个或者多个功能通过函数的方式......
  • 26. 文件操作
    一、数据读写  在PySide6中对文件和文件夹的进行操作时,主要使用QFile类、QFileInfo类和QDir类。我们可以在终端中使用pip安装pyside6模块。pipinstallpyside6在PySide6窗口程序对文件或者文件夹进行操作时,不强制要求必须使用PySide6中提供的QFile、QDir......
  • Stable Diffusion基础操作教程(保姆喂饭级)爷爷都能学会(一)
    有需要stablediffusion整合包以及提示词插件,可以扫描下方,免费获取1.StableDiffusion是什么?StableDiffusion是⼀款基于⼈⼯智能技术开发的绘画软件,它可以帮助艺术家和设计师快速创建⾼品质的数字艺术作品。该软件使⽤了⼀种称为GAN(⽣成对抗⽹络)的深度学习模型,该模型......
  • 【Vim Masterclass 笔记12】第 7 章:Vim 核心操作之——文本对象与宏操作 + S07L28:Vim
    文章目录Section7:TextObjectsandMacrosS07L28TextObjects1文本对象的含义2操作文本对象的基本语法3操作光标所在的整个单词4删除光标所在的整个句子5操作光标所在的整个段落6删除光标所在的中括号内的文本7删除光标所在的小括号内的文本8操作尖括号内的文......
  • 采购申请审批增强BADI—>ME_REQ_POSTED,通过报错不能控制审批操作
    Solved:Re:BadiME_REQ_POSTED-SAPCommunityHiexpert,IusedIF_EX_ME_REQ_POSTED~POSTEDforthebadiME_REQ_POSTED.Isitpossibletoblocksomeiteminthepurchaserequisitionviathisbadi??wichmethodIhavetouse?whatareallmethodthatIc......
  • .com 文件是 Windows 操作系统中的一种文件扩展名,通常指代 可执行文件。在早期的计算
    .com文件是Windows操作系统中的一种文件扩展名,通常指代可执行文件。在早期的计算机系统(如MS-DOS和早期版本的Windows)中,.com文件被广泛使用,它是一种用于执行程序的二进制文件格式。1. .com文件是什么?.com文件是一种二进制可执行文件,包含了程序代码,可以由操作系统直接......
  • C:\Users\Administrator\Local Settings\temp 是 Windows 操作系统中的一个临时文
    C:\Users\Administrator\LocalSettings\temp是Windows操作系统中的一个临时文件夹,通常用于存储操作系统和应用程序在运行时生成的临时数据。具体来说,temp文件夹用于存放临时文件,例如:安装文件:一些程序在安装过程中会将临时文件放在这里。缓存文件:一些程序可能会将数据缓存......
  • 域名管理指南 - 正确修改网站域名的操作步骤与最佳实践
    当您需要更换网站的域名时,必须遵循严格的流程以确保顺利过渡且不影响用户体验。以下是详细的步骤和注意事项:备份现有数据在执行任何可能导致配置变更的操作之前,务必备份完整的数据库和文件副本。这不仅是应对突发状况的有效措施,也是恢复历史版本的基础保障。大多数服务器管理系......
  • 达梦sqllog慢日志配置方案,抓取用户所有的操作记录
    很多用户反馈,开启审计影响数据库性能,但是不开启审计,数据库没保障,数据无安全性,误删了数据,无法找到记录达梦慢日志可以配置下,记录用户的操作记录 mkdir-p /data/dmlog/logvi/data/dmdb/sqllog.iniBUF_TOTAL_SIZE=10240  #SQL日志buffer占用空间的上限,单位为KB,取值......
  • KuboardSpray v1.2.4 在 Rocky Linux 9.5 上部署 K8s 失败报错“当前资源包不支持此操
    KuboardSpray报错日志截图进入KuboardSpray的docker容器实例里的当前用户目录下,再用find.-name"*.yaml"|xargs-igrep-iHn"distribution:Rocky"{}查找声明RockyLinux系统版本的地方,如下图解决办法:只需对上图中红框处的3个配置文件进行修改,加上较新版本的Rock......