DOM节点操作

news2024/10/6 18:27:05

节点操作

改变元素节点中的内容可以使用两个相关属性:innerHTML innerText

注意字符串不能换行

innerHTML属性能以HTML语法设置节点中的内容

innerText属性只能以纯文本的形式设置节点中的内容

节点创建

document.createElement()方法用于创建一个指定tagname的HTML元素,例如创建div标签

var oDiv=document.createElement('div');

任何已经在DOM树上的节点,都可以调用appendChild()方法,它可以将孤儿节点挂载到它的内部,成为它的最后一个子节点 父节点.appendChild(孤儿节点);

任何已经在DOM树上的节点,都可以调用insertBefore()方法,它可以将孤儿节点挂载到它的内部,成为它的"标杆子节点"之前的节点 父节点.insertBefore(孤儿节点,标杆节点);

<div id="box">
    <p>我是原本的段落0</p>
    <p>我是原本的段落1</p>
    <p>我是原本的段落2</p>
</div>
<script>
    var oBox=document.getElementById('box');
    //创建孤儿节点
    var oP=document.createElement('p');
    //设置内部文字
    oP.innerText='我是新来的';
    //上树
    pBox.appendChild(oP);
</script>

左下角页面图                                         

                               

右上角页面图 

<div id="box">
    <p>我是原本的段落0</p>
    <p>我是原本的段落1</p>
    <p>我是原本的段落2</p>
</div>
<script>
    var oBox=document.getElementById('box');
    var oPs=oBox.getElementsByTagName('p');
    //创建孤儿节点
    var oP=document.createElement('p');
    //设置内部文字
    oP.innerText='我是新来的';
    //上树
    oBox.insertBefore(oP,oPs[0]);    
</script>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        td {
            width: 120px;
            height: 30px;
            border: 1px solid #000;
        }
    </style>
</head>
<body>
<table id="mytable"></table>
<script>
    var mytable = document.getElementById('mytable');
    for (var i = 1; i <= 9; i++) {
        var tr = document.createElement('tr');
        for (var j = 1; j <= i; j++) {
            var td = document.createElement('td');
            td.innerText = i + '*' + j + '=' + (i * j);
            tr.appendChild(td);
        }
        mytable.appendChild(tr);
    }
</script>
</body>
</html>

移动节点 

删除节点

克隆节点

改变元素节点的HTML属性(src,href)只需要直接打点进行更改即可 oImg.src='images/2.jpg';(条件符合W3C标准属性)

不符合W3C标准属性,要使用setAttribute('属性名',值)和getAttribute('属性名')来设置、读取

nodeType常用属性值

document对象表示整个HTML文档,它是DOM节点树的根 typeof document -> "object"

访问元素节点的常用方法

注意事项:1.如果id同名出现多个的话,getElementById()获取到的是第一个id

2.getElementsByTagName()通过标签名得到节点数组

3.getElementsByClassName()通过类名得到节点数组

4.如果有多个元素符合条件,querySelector()得到页面上第一个元素

延迟运行

给window对象添加onload事件监听。onload表示页面都加载完毕了。

节点的关系

所有节点:空文本节点 注释节点 元素节点 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<div id="box">
    <p>段落1</p>
    <p id="para">段落2
        <span>1</span>
        <span>2</span>
        <span>3</span>
    </p>
    <p>段落3</p>
</div>
<script>
    var box=document.getElementById('box');
    var para=document.getElementById('para');
    // 获取元素子节点函数 类似children属性功能
    function getChildren(node){
        var children=[];
        for(var i=0;i<node.childNodes.length;i++){
            if (node.childNodes[i].nodeType==1){
                children.push(node.childNodes[i]);
            }
        }
        return children;
    }
    console.log(getChildren(box));
    console.log(getChildren(para));
</script>
</body>
</html>

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<div id="box">
    <p>段落1</p>
    我是文本
    <!--我是注释-->
    <p id="para">段落2
        <span>1</span>
        <span>2</span>
        <span>3</span>
    </p>
    <p>段落3</p>
</div>
<script>
    var box=document.getElementById('box');
    var para=document.getElementById('para');
    // 封装一个获取前一个兄弟元素节点函数
    function getElementPrevSibling(node){
        var o=node;
        while (o.previousSibling!=null){
            if (o.previousSibling.nodeType==1){
                return o.previousSibling;
            }
            o=o.previousSibling;
        }
        return null;
    }
    console.log(getElementPrevSibling(para));
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<div id="box">
    <p>段落1</p>
    我是文本
    <!--我是注释-->
    <p id="para">段落2
        <span>1</span>
        <span>2</span>
        <span>3</span>
    </p>
    <p>段落3</p>
</div>
<script>
    var box=document.getElementById('box');
    var para=document.getElementById('para');
    // 封装一个获取所有兄弟元素节点函数
    function getAllElementSibling(node){
        var prevs=[];
        var nexts=[];
        var o=node;
        while (o.previousSibling!=null){
            if (o.previousSibling.nodeType==1){
                prevs.unshift(o.previousSibling)
            }
            o=o.previousSibling;
        }
        o=node;
        while (o.nextSibling!=null){
            if (o.nextSibling.nodeType==1){
                nexts.push(o.nextSibling);
            }
            o=o.nextSibling;
        }

        return prevs.concat(nexts);
    }
    console.log(getAllElementSibling(para));
</script>
</body>
</html>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/126632.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

android studio编译慢

前言 android studio编译慢一直就是一个问题&#xff0c;很久以前使用eclipse&#xff0c;编译速度很快&#xff0c;在还没开始正式工作的时候就开始使用android studio&#xff0c;那时候还是0.8 很原始&#xff0c;主要那时候还没开始工作&#xff0c;所以编译快慢没感觉&am…

TikTok Shop跨境服务市场上线;俄罗斯速卖通发布延误通知

让我们一起来看看今日都有哪些新鲜事吧&#xff01;01 TikTok Shop跨境服务市场上线 12月28日消息&#xff0c;服务商是助力商家在TikTok Shop成长非常重要的合作伙伴&#xff0c;TikTok Shop希望通过上线服务市场帮助商家快速了解服务商&#xff0c;筛选符合自身需求的服务商…

【JavaSE成神之路】Java面向对象(上)

哈喽&#xff0c;我是兔哥呀&#xff0c;今天就让我们继续这个JavaSE成神之路&#xff01; 这一节啊&#xff0c;咱们要学习的内容是Java的面向对象。 首先我们回顾一下&#xff0c;之前的章节我们学到了哪些东西。 我们学会了写一个类&#xff0c;然后里面弄一个main方法&am…

layer2 实现方式之状态通道

状态通道也算是一种比较热门的扩容方案&#xff0c;状态通道解决方案通过将链下交互和链上清算隔离开&#xff0c;能够在保障一定程度的非中心化和资产安全性的同时&#xff0c;实现速度更快、费用更低的交易。状态通道作为一种链下扩容方案&#xff0c;从一般到特殊分为通用状…

时光飞逝,博客两周年啦

原文链接&#xff1a;时光飞逝&#xff0c;博客两周年啦 博客自 2020年12月10日 运营以来&#xff0c;已经成功走过两年啦&#xff08;差点成为两年半的博主&#xff09;。 在这两年中&#xff0c;曾替无数网友解答了各种关于建站的疑难杂症&#xff0c;此处略过 30000 字。 …

linux系统动态库的连接

前言&#xff1a;在应用程序开发过程中&#xff0c;难免会用到第三方库&#xff0c;有的是开源的第三方库&#xff0c;有的是不开源的&#xff0c;还有的是自己写的库。上篇文章总结了应用程序调用静态库《linux中静态库编译与使用》&#xff0c;本文总结了几种在应用程序中快速…

八、esp8266建立基本网络服务器

1、网络服务器 (1)网络服务器有很多类型&#xff0c;它们功能十分丰富。通常承担网络服务器工作的设备都是运算能力比较强大的电脑。 (2)ESP8266虽然也能实现网络服务器的一些功能&#xff0c;但是毕竟它的运算能力是无法与那些昂贵的服务器电脑相比较&#xff0c;因此ESP826…

STM32的升级--ICP/ISP/IAP

ICP/ISP/IAP 区别 ICP(In-Circuit Programing): 通过J-Link/SWD等下载器烧写程序&#xff0c;上位机需要借助其他硬件的参与才能更新固件&#xff0c;可以更新MCU的所有存储区域&#xff1b; ISP(In-System Programing): 通过MCU出厂时固化的一个bootloader升级程序&#xff0…

第四节 空间参考类的属性说明

空间参考类&#xff1a;SpatialReference 说明 空间参考类是arcpy下面的一级类&#xff0c;用于定义空间参考的各类信息&#xff0c;主要是坐标信息。 空间参考Spatial Reference与坐标系最大的区别&#xff0c;在于空间参考除了定义坐标系以外&#xff0c;还要定义一系列地理…

Java BigDecimal总结

文章目录Java BigDecimal总结概述float 和 double的问题创建BigDecimal对象BigDecimal.valueOf()源码分析equals() 和 compareTo()BigDecimal设置精度和舍入模式舍入模式介绍BigDecimal转字符串DecimalFormat 格式化总结Java BigDecimal总结 概述 BigDecimal类在Java的java.m…

一个简单的数学问题

这个东西发提问没人看就发在这里了 一个球体的体积V_Sphere是容易求的&#xff1a; 则我们很容易求出半径为1的圆球的体积为. 众所周知方程【】在三维笛卡尔坐标系中的图像为一个半径为R的圆&#xff0c; 则R取1时这个方程的图像就成了一个半径为1的圆。 那么我们就能推出f(x…

飞行机器人专栏(九)-- 多传感器固定端口分配

目录 ​编辑 1 /dev/设备列表 2 ttyUSB*端口ID 3 端口别名rules动态绑定 4 launch文件配置 1 /dev/设备列表 lsusblsusb -t 2 ttyUSB*端口ID 查看/dev/ttyUSB* 设备端口ID &#xff1a;0403&#xff1a;6014 找到对应USB的设备ID&#xff0c;这里是 0403&#xff1a;…

测试新风向|视频 AI 转流程图初体验

前言&#xff1a; &#x1f604;作者简介&#xff1a;小曾同学.com,小伙伴们也可以叫我小曾&#xff0c;一个致力于测试开发的博主⛽️ 如果文章知识点有错误的地方&#xff0c;还请大家指正&#xff0c;让我们一起学习&#xff0c;一起进步。&#x1f60a; 座右铭&#xff1a;…

极狐GitLab include 语法减少 CI/CD Pipeline 代码冗余,提升构建效率

项目经理&#xff1a;我们有个 Java 的新项目要开始了&#xff0c;需要你帮忙设置调试一下 CI/CD Pipeline DevOps 工程师&#xff1a;好的&#xff0c;没问题 ONE WEEK LATER... 项目经理&#xff1a;新项目的 CI/CD Pipeline 咋样了啊&#xff0c;我看研发还是手动人肉编译…

基于Vue+SpringBoot的在线考试系统,支持多种题型,含数据库文件

spring-boot-online-exam 完整代码下载地址&#xff1a;基于VueSpringBoot的在线考试系统 快速体验 在安装了docker的机器上执行如下命令&#xff1a; 安装mysql: docker run --name exam-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORDaA111111 -d mysql:5.7.15然后用doc/sql…

freeswitch的gateway实现出中继的主备方案

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 某些呼叫场景中&#xff0c;我们有2条出中继线路可选&#xff0c;2条出中继需要按照主备模式来配置&#xff0c;优先使用主中继呼叫&#xff0c;当主中继出现问题时&#xff0c;呼叫自动转移到备用中继呼叫。 本节中&a…

正大国际期货:恒指操作技巧之交易中五种绝佳的开仓思路分析

很多人总是亏损&#xff0c;其实最重要的原因之一是没有一个优势的概率系统&#xff0c;正大IxxxuanI经过了解之后&#xff0c;对目前市面上概率系统进行总结&#xff0c;现将以下几种优势的概率系统归纳罗列如下&#xff0c;有缘者定可举一反三&#xff0c;或可为你细化和改良…

Android中GRPC的使用-拦截器

在构建GRPC应用程序时&#xff0c;无论是客户端应用程序&#xff0c;还是服务端应用程序&#xff0c;在远程方法执行之前后之后&#xff0c;都可能需要执行一些通用逻辑。在GRPC中可以拦截RPC的执行&#xff0c;来满足特定的需求&#xff0c;如日志、认证、性能度量指标等&…

基于Amlogic 安卓9.0, 驱动简说(四):Platform平台驱动,驱动与设备的分离

一、篇头 本文介绍Platform平台驱动框架&#xff0c;使用此框架&#xff0c;将可以用上DTS设备树文件&#xff0c;实现设备的静态枚举&#xff0c;实现设备与驱动的分离。 本文基于Amlogic T972 &#xff0c; Android 9.0&#xff0c; 内核版本 4.9.113 二、系列文章 第1篇&a…

【Docker基础篇】一文完成快速使用

Docker基础篇前言Docker是什么&#xff1f;Docker与传统虚拟机技术区别Docker作用、为什么用docker原理Docker常用命令案例展示redis各种软件安装打包到本地、上传到远程仓库打包到本地推送到远程仓库前言 所有的权威均来自与官方&#xff0c;如有疑问请参考官网文献。人非圣贤…