javaScript操作Dom总结及demo

Python silk 库 支持微信语音 python silk voice decode encode 微信语音 阅读详情

一、document.getElementById()    根据Id获取元素节点

复制代码
    <div id="div1">
        <p id="p1">
            我是第一个P</p>
        <p id="p2">
            我是第二个P</p>
    </div>
    
    window.onload = function () {
            var str = document.getElementById("p1").innerHTML;
            alert(str);        //弹出    我是第一个P
        }
复制代码


二、document.getElementsByName()    根据name获取元素节点

复制代码
    <div id="div1">
        <p id="p1">
            我是第一个P</p>
        <p id="p2">
            我是第二个P</p>
        <input type="text" value="请输入值" name="userName" />
        <input type="button" value="确定" onclick="fun1()">
    </div>
        
        function fun1() {
            var username = document.getElementsByName("userName")[0].value;
            alert(username);    //输出userName里输入的值
        }
复制代码


三、document.getElementsByTagName()    根据HTML标签名获取元素节点,注意getElements***的选择器返回的是一个NodeList对象,能根据索引号选择其中1个,可以遍历输出。

复制代码
    <div id="div1">
        <p id="p1">
            我是第一个P</p>
        <p id="p2">
            我是第二个P</p>
    </div>

    window.onload = function () {
            var str = document.getElementsByTagName("p")[1].innerHTML;
            alert(str);        //输出  我是第二个P,因为获取的是索引为1的P,索引从0开始
        }    

    window.onload = function () {
            var arr = document.getElementsByTagName("p");
            for (var i = 0; i < arr.length; i++) {
                alert(arr[i].innerHTML);
            }
        }

    window.onload = function () {
            var node = document.getElementById("div1");
         var node1 = document.getElementsByTagName("p")[1];    //从获取到的元素再获取
            alert(node1.innerHTML);
    }
复制代码


四、document.getElementsByClassName()    根据class获取元素节点

复制代码
    <div id="div1">
        <p id="p1" class="class1">
            我是第一个P</p>
        <p id="p2">
            我是第二个P</p>
    </div>

    window.onload = function () {
            var node = document.getElementsByClassName("class1")[0];
            alert(node.innerHTML);
        }
复制代码

五、javascript中的CSS选择器

复制代码
    document.querySelector()    //根据CSS选择器的规则,返回第一个匹配到的元素
    document.querySelectorAll()    //根据CSS选择器的规则,返回所有匹配到的元素

    <div id="div1">
        <p id="p1" class="class1">
            我是第一个P</p>
        <p id="p2" class="class2">
            我是第二个P</p>
    </div>

        window.onload = function () {
            var node = document.querySelector("#div1 > p");    
            alert(node.innerHTML);                //输出  我是第一个P

            var node1 = document.querySelector(".class2");
            alert(node1.innerHTML);                //输出  我是第二个P

            var nodelist = document.querySelectorAll("p");
            alert(nodelist[0].innerHTML + " - " + nodelist[1].innerHTML);    //输出  我是第一个P - 我是第二个P
        }
复制代码


六、文档结构和遍历
    (1)作为节点数的文档
    1、parentNode    获取该节点的父节点    
    2、childNodes    获取该节点的子节点数组
    3、firstChild    获取该节点的第一个子节点
    4、lastChild    获取该节点的最后一个子节点
    5、nextSibling    获取该节点的下一个兄弟元素
    6、previoursSibling    获取该节点的上一个兄弟元素
    7、nodeType    节点的类型,9代表Document节点,1代表Element节点,3代表Text节点,8代表Comment节点,11代表DocumentFragment节点
    8、nodeVlue    Text节点或Comment节点的文本内容
    9、nodeName    元素的标签名(如P,SPAN,#text(文本节点),DIV),以大写形式表示

    注意,以上6个方法连元素节点也算一个节点。

复制代码
    <div id="div1">
            <p id="p1" class="class1">
                    我是第一个P</p>
            <p id="p2" class="class2">
                    我是第二个P</p>
        </div>
    
     window.onload = function () {
            var node1 = document.querySelector(".class2");
            alert(node1.parentNode.innerHTML); //输出  <p id="p1" class="class1">我是第一个P</p><p id="p2" class="class2">我是第二个P</p>

            var nodelist = document.getElementById("div1");
            var arr = nodelist.childNodes;
            alert(arr[1].innerHTML + " - " + arr[3].innerHTML); //输出    我是第一个P - 我是第二个P 为什么是1,3呢?因为本方法文本节点也会获取,
                                           也就是说0,2,4是文本节点
        }

    <div id="div1">
            文本1
            <p id="p1" class="class1">
                我是第一个P</p>
            文本2
            <p id="p2" class="class2">
                我是第二个P</p>
            文本3
        </div>

    window.onload = function () {        //依次输出,文本1,我是第一个P,文本2,我是第二个P,文本3
            var node = document.getElementById("div1");
            for (var i = 0; i < node.childNodes.length; i++) {
                if (node.childNodes[i].nodeType == 1) {
                    alert(node.childNodes[i].innerHTML);
                }
                else if (node.childNodes[i].nodeType == 3) {
                    alert(node.childNodes[i].nodeValue);
                }
            }
        }
复制代码

    (2)作为元素树的文档
    1、firstElementChild        第一个子元素节点
    2、lastElementChild        最后一个子元素节点
    3、nextElementSibling        下一个兄弟元素节点
    4、previousElementSibling    前一个兄弟元素节点
    5、childElementCount        子元素节点个数量
    注意,此5个方法文本节点不算进去

复制代码
        <div id="div1">
            <p id="p1" class="class1">
                我是第一个P</p>
            <p id="p2" class="class2">
                我是第二个P</p>
      </div>

        window.onload = function () {
            var node = document.getElementById("div1");
            var node1 = node.firstElementChild;
            var node2 = node.lastElementChild;

            alert(node.childElementCount);  //输出2,div1一共有两个非文档子元素节点
            alert(node1.innerHTML);         //输出 我是第一个P
            alert(node2.innerHTML);         //输出 我是第二个P
            alert(node2.previousElementSibling.innerHTML);  //输出 我是第一个P(第二个元素节点的上一个非文本元素节点是P1)
            alert(node1.nextElementSibling.innerHTML);      //输出 我是第二个P(第一个元素节点的下一个兄弟非文本节点是P2)
        }
复制代码


七、javascript操作HTML属性
    1、属性的读取,此处要注意的是,某些HTML属性名称在javascript之中是保留字,因此会有些许不同,如class,lable中的for在javascript中变为htmlFor,className。

复制代码
    <div id="div1">
            <p id="p1" class="class1"> 我是第一个P</p>
            <img src="123.jpg" alt="我是一张图片" id="img1" />
            <input type="text" value="我是一个文本框" id="input1" />
        </div>

        window.onload = function () {
            var nodeText = document.getElementById("input1");
            alert(nodeText.value);        //输出 我是一个文本框
            var nodeImg = document.getElementById("img1");
            alert(nodeImg.alt);            //输出 我是一张图片
            var nodeP = document.getElementById("p1");
            alert(nodeP.className);        //输出 class1    注意获取class是className,如果写成nodeP.class则输出undefined
        }
复制代码

    2、属性的设置,此处同样要注意的是保留字

复制代码
    <div id="div1">
            <img src="1big.jpg" alt="我是一张图片" id="img1" onclick="fun1()" />
        </div>

    function fun1() {
            document.getElementById("img1").src = "1small.jpg";        //改变图片的路径属性。实现的效果为,当点击图片时,大图变小图。
        }
复制代码


    3、非标准HTML属性
    getAttribute();    //注意这两个方法是不必理会javascript保留字的,HTML属性是什么就怎么写。
    setAttribute();

复制代码
        <div id="div1">
            <img src="1big.jpg" alt="我是一张图片" class="imgClass" id="img1" onclick="fun1()" />
        </div>

    function fun1() {
            document.getElementById("img1").setAttribute("src", "1small.jpg");
            alert(document.getElementById("img1").getAttribute("class"));
        }
复制代码

    4、Attr节点的属性
        attributes属性  非Element对象返回null,Element一半返回Attr对象。Attr对象是一个特殊的Node,通过name与value获取属性名称与值。
        如:document.getElementById("img1")[0];
           document.getElementById("img1").src;

复制代码
    <div id="div1">
            <img src="1big.jpg" alt="我是一张图片" class="imgClass" id="img1" onclick="fun1()" />
        </div>

    function fun1() {
            alert(document.getElementById("img1").attributes[0].name);    //输出  onclick    注意,通过索引器访问是写在右面在排前面,从0开始
            alert(document.getElementById("img1").attributes.src.value);    //输出1big.jpg
            document.getElementById("img1").attributes.src.value = "1small.jpg";    //点击后改变src属性,实现了点击大图变小图效果
        }
复制代码


八、元素的内容
    1、innerText、textContent    innerText与textContent的区别,当文本为空时,innerText是"",而textContent是undefined
    2、innerHTML

复制代码
    <div id="div1">
            <p id="p1">我是第一个P</p>
            <p id="p2">我是第<b>二</b>个P</p>
        </div>
    
    window.onload = function () {
            alert(document.getElementById("p1").innerText);  //注意火狐浏览器不支持innerText
            alert(document.getElementById("p1").textContent);    //基本都支持textContent
            document.getElementById("p1").textContent = "我是p1,javascript改变了我";    //设置文档Text
            alert(document.getElementById("p2").textContent);
            alert(document.getElementById("p2").innerHTML); //innerHTML与innerText的区别,就是对HTML代码的输出方式Text不会输出HTML代码
        }
复制代码


九、创建,插入,删除节点
    1、document.createTextNode()    创建一个文本节点

复制代码
        <div id="div1">
            <p id="p1">我是第一个P</p>
            <p id="p2">我是第二个P</p>
        </div>

    window.onload = function () {
            var textNode = document.createTextNode("<p>我是一个javascript新建的节点</p>");
            document.getElementById("div1").appendChild(textNode);
        }
复制代码


    完成后HTML变为:
    div id="div1">
        <p id="p1">我是第一个P</p>
        <p id="p2">我是第二个P</p>
        我是一个javascript新建的节点
    </div>

    2、document.createElement()    创建一个元素节点

复制代码
    <div id="div1">
            <p id="p1">我是第一个P</p>
            <p id="p2">我是第二个P</p>
        </div>

    window.onload = function () {
            var pNode = document.createElement("p");
            pNode.textContent = "新建一个P节点";
            document.getElementById("div1").appendChild(pNode);
        }
复制代码

    执行之后HTML代码变为:

    <div id="div1">
        <p id="p1">我是第一个P</p>
        <p id="p2">我是第二个P</p>
        <p>新建一个P节点</p>
    </div>

    3、插入节点
        appendChild()    //将一个节点插入到调用节点的最后面
        insertBefore()    //接受两个参数,第一个为待插入的节点,第二个指明在哪个节点前面,如果不传入第二个参数,则跟appendChild一样,放在最后。

复制代码
    <div id="div1">
            <p id="p1">我是第一个P</p>
        </div>

    window.onload = function () {
            var pNode1 = document.createElement("p");
            pNode1.textContent = "insertBefore插入的节点";
            var pNode2 = document.createElement("p");
            pNode2.textContent = "appendChild插入的节点";
            document.getElementById("div1").appendChild(pNode2);
            document.getElementById("div1").insertBefore(pNode1,document.getElementById("p1"));
        }
复制代码

    执行之后HTML代码为:
    <div id="div1">
        <p>insertBefore插入的节点</p>
        <p id="p1">我是第一个P</p>
        <p>appendChild插入的节点</p>
    </div>

十、删除和替换节点。
    1、removeChild();    由父元素调用,删除一个子节点。注意是直接父元素调用,删除直接子元素才有效,删除孙子元素就没有效果了。

复制代码
    <div id="div1">
            <p id="p1">我是第一个P</p>
            <p id="p2">我是第二个P</p>
        </div>

    window.onload = function () {
            var div1 = document.getElementById("div1");
            div1.removeChild(document.getElementById("p2"));
        }
复制代码


    执行之后代码变为:
    <div id="div1">
        <p id="p1">我是第一个P</p>    //注意到第二个P元素已经被移除了
    </div>
    
    2、replaceChild()    //删除一个子节点,并用一个新节点代替它,第一个参数为新建的节点,第二个节点为被替换的节点

复制代码
    <div id="div1">
            <p id="p1">我是第一个P</p>
            <p id="p2">我是第二个P</p>
        </div>

    window.onload = function () {
            var div1 = document.getElementById("div1");
            var span1 = document.createElement("span");
            span1.textContent = "我是一个新建的span";
            div1.replaceChild(span1,document.getElementById("p2"));
        }
复制代码

    执行完成后HTML代码变为:
    <div id="div1">
        <p id="p1">我是第一个P</p>
        <span>我是一个新建的span</span>    //留意到p2节点已经被替换为span1节点了
    </div>

十一、javascript操作元素CSS

    通过元素的style属性可以随意读取和设置元素的CSS样式,例子:

复制代码
<head>
    <title></title>
    <script type="text/javascript">
        window.onload = function () {
            alert(document.getElementById("div1").style.backgroundColor);
            document.getElementById("div1").style.backgroundColor = "yellow";
        }
    </script>
</head>
<body>
    <div id="div1" style="width:100px; height:100px; background-color:red"></div>
</body>
复制代码
js(DOM)基础:13、DOM操作CSS、读取元素样式、其它样式操作属性、demo(阅读完协议才能注册)、事件对象、demo(div跟随鼠标)、冒泡 本文介绍了两种在JavaScript中操作CSS样式的方法。第一部分展示了通过DOM的style属性直接修改元素样式,使用语法元素.style.样式名 = 样式值,并注意样式名需要转换为驼峰命名法。第二部分讲解如何读取元素样式,对比了IE浏览器的currentStyle和其他浏览器的getComputedStyle()方法,并提供了一个兼容性函数getStyle()来统一这两种方式。文章通过代码示例和注释详细说明了各种方法的用法及注意事项,包括样式优先级问题和不同浏览器的兼容性处理。 阅读详情

相关推荐

YOKA时尚网7日重头戏JavaScript前端展示Demo

本文还有配套的精品资源,点击获取 简介:本JavaScript前端Demo展示了如何利用JavaScript及其现代特性,如ECMAScript 6,以及可能涉及的前端框架或库,构建一个动态、交互性强的网页应用。它演示了JavaScript处理页面动态行为和用户交互的能力,包括控制DOM、响应事件和使用Ajax实现异步请求。此外,该Demo还展示了如何通过缓存策略优化性能,...

weixin_42613018的博客 2267

javascript之DOM操作

javascript之DOM操作 一、document.getElementById() 根据Id获取元素节点 <div id="div1"> <p id="p1"> 我是第一个...

ajwqb06628的专栏 2435

Python库 | pysilk-mod-1.5.0.tar.gz

资源分类:Python库 所属语言:Python 资源全名:pysilk-mod-1.5.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

(学习)document.getElementsByClassName()

个人学习记录,根据别的博主的demo学习,并加上自己的学习标记,文章有标记来源

weixin_48372590的博客 2万+

5G移动性管理实战:手把手教你配置NR小区重选参数(附避坑指南)

本文深入解析5G网络移动性管理中的小区重选参数配置实战。通过拆解小区选择与重选的核心机制,结合真实案例,手把手指导如何配置NR小区重选参数,并分享常见避坑指南,帮助工程师优化网络性能,提升用户移动体验。

weixin_29229261的博客 200

五.卡尔曼滤波器(EKF)开发实践之五: 编写自己的EKF替换robot_pose_ekf中EKF滤波器

本系列文章主要介绍如何在工程实践中使用卡尔曼滤波器,分五个小节介绍: 一.卡尔曼滤波器开发实践之一: 五大公式 二.卡尔曼滤波器开发实践之二: 一个简单的位置估计卡尔曼滤波器 三.卡尔曼滤波器(EKF)开发实践之三: 基于三个传感器的海拔高度数据融合 四.卡尔曼滤波器(EKF)开发实践之四: ROS系统位姿估计包robot_pose_ekf详解 五.卡尔曼滤波器(EKF)开发实践之五: 编写自己的EKF替换robot_pose_ekf中EKF滤波器 也就是本文 ...

okgwf的博客 4138

getElementsByClassName函数实现获取指定类名的子元素列表

语法如下: var elements = getElementsByClassName(element, names); 使用示例如下: 如果html元素       对应的DOM节点为example, 那么 getElementsByClassName(example, “aaa”); 运行结果为包含id为p1, id为p2的元

liang526011569的博客 1万+

从零搭建《火影忍者》手游服务端:Linux环境部署与全流程实战

游戏服务器后端开发是构建大型多人在线体验的核心技术,其原理涉及高并发网络通信、分布式系统架构与数据一致性保障。在技术价值上,一套稳定高效的服务端不仅能支撑海量玩家实时交互,更是游戏业务逻辑、经济系统和安全防线的基石。典型的应用场景包括MMORPG、回合制卡牌、SLG等中重度手游。本文以《火影忍者》IP的横版卡牌回合制手游为例,聚焦于**手工服务端**的完整搭建过程,详细拆解从Linux系统初始化、MySQL与**Redis**缓存部署、核心服务编译、到代理后台联调的全链路实践,为开发者深入理解游戏后端架构提

weixin_30800615的博客 339

原生dom节点基础(获取子父兄弟节点)

首先在html文件中新建y var box=document.getElementsByClassName('box')[0] //.nodeName 节点名 console.log(box.nodeName) //.nodeValue 节点值 console.log(box.nodeValue) //.nodeType 节点 console.log(box.nodeType)

weixin_51035283的博客 1145

银河麒麟v10装Docker实战:在线离线安装与容器部署指南

容器技术作为现代软件交付的核心方式,通过将应用与依赖打包成镜像,实现了环境的一致性与快速部署。Docker作为最流行的容器引擎,其安装与配置是上云和国产化转型中的基础技能。在国产操作系统银河麒麟v10环境中,由于系统兼容性和网络环境的差异,Docker的部署需要特别注意在线与离线两种模式的选择。本文从基础概念出发,结合麒麟v10的实际环境,详细梳理了Docker引擎的安装、镜像加速、存储配置以及MySQL、Redis等常用容器的部署方法,并针对SELinux、cgroup驱动等常见问题给出了解决方案,帮助开

weixin_30431445的博客 146

DFT知识点扫盲——DFT scan chain

实际在项目中synccell一般直接上ULVT,既然是SDF,就是带Scan接口的DFF,SN (set negtive)是低置位,RP(reset positive)是高复位,既没有SN也没有RP的就是无复位寄存器。1:定义:满足可测试性设计(DFT),将设计中所有的触发器连接到一条或者若干条链上,称为scan chain,将一个复杂的时序电路转换为简单的组合电路进行测试,这一步是在逻辑综合(DC)中实现。当SE=1当SI=1时,电路进入scan状态,当SI=0时,电路工作在normal状态。

笨蛋大乌龟的博客 4938

JS的DOM操作Demo

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34306446的博客 145

学习笔记9--智能驾驶的功能安全设计之功能安全设计

本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》。此专栏是关于《自动驾驶系统设计及应用》书籍的笔记.

FUXI_Willard 1795

JS Dom节点操作demo!

通过黑马课程的学习,在这里分享一个js Dom中节点操作的小练习 需求:使用js创建一个4*3的表格table. onload = function(){ function c(tagName){ return document.createElement(tagName); } var table = c('...

weixin_33737134的博客 158

DIY电子管耳放实战:12AU7+6V6GT组合的电路设计与调试心得

本文详细分享了DIY电子管耳放的实战经验,重点解析了12AU7与6V6GT经典组合的电路设计、元件选型与调试过程。内容涵盖从核心架构设计、关键元件(如输出变压器、耦合电容)的科学选型,到静态工作点设置、负反馈引入及常见噪声问题的排查,旨在帮助音响DIY爱好者和电子管放大器初学者成功打造一台低失真、高信噪比且富有“胆味”的耳机放大器,享受动手制作的乐趣与温暖音质。

weixin_29230805的博客 552

华为OD新系统机试真题 4.26 -最大化游戏试玩资格分发

华为OD机试新系统真题【最大化游戏试玩资格分发】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD新系统机试 4月26号真题【最大化游戏试玩资格分发】。

qq_45776114的博客 827

原生javaScript手写简单的table.js

JS ! function(global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.a...

weixin_30379973的博客 1048

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

js里dom操作的一些demo

全选和反选

m0_61386972的博客 155

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【vue系列-01】vue初级入门以及demo实现详解

vue的初级入门以及代码实现

zhenghuishengq的博客 9482

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

js:日期对象和dom节点

学过树的孩子们都知道,树是有一个个节点的,dom树也是如此元素节点:比较重要,在后期在增删改查里,主要指的是元素节点,也就是所有的标签比如body、 div,html 是根节点属性节点:所有的属性,比如a标签的href文本节点:所有的文本其他......节点的增删改查这里的增删改查是根据节点之间的关系进行增删改查,比如html是head的父节点,在已知head标签的时候就可以通过父子关系查找到html标签。

Au_ust的博客 1142

HTML多语言切换Demo及JS多语言插件:实现流畅的语言切换

HTML多语言切换Demo及JS多语言插件:实现流畅的语言切换 【下载地址】HTML多语言切换Demo及JS多语言插件 本仓库提供一款高效便捷的HTML多语言切换Demo,内置JS多语言翻译插件,帮助开发者轻松实现流畅的语言切换功能。Demo具备快速响应、操作简单、易于理解的特点,双击屏幕即可切换语言,无需复杂配置。内置...

gitblog_06708的博客 831

使用CSS3DRenderer/CSS2DRenderer给模型上面添加html标签的一个demo

这里有一点需要注意一下,就是添加渲染器css3dRender,他会增加一个html标签,默认会叠加到父元素canvas上面,这样就会导致鼠标缩放,模型无法缩放,所以需要设置pointerEvents属性为none,解决html标签对画布的遮盖。思路:使用css3dRender添加一个图片,然后获取的位置坐标,使用css3dRender添加一个文字标签,也设置这个位置坐标,此外z轴设置一个高度,这样就可以放在图片的正上方。

m0_73918807的博客 1385

每天一个JS 小demo之表单排序。主要知识点:DOM中的表单操作,节点操作

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><script type="text/javascript">window.onload = function(){ var input = doc...

weixin_30570101的博客 82

java 商品筛选视频教程_JS实现商品筛选功能

每天一个JS 小demo之商品筛选。主要知识点:DOM方法综合运用效果图:代码:Documentnav {height: 50px;}nav span {margin: 0 5px;}.show {color: red;}手机:锤子T1锤子T2坚果U1锤子M1坚果Pro价格:3200260089927992299屏幕:3996008001200(function(){var nav = docum...

weixin_35918994的博客 209
上一篇: matlab调用java
下一篇: spring 配置时 bean id 与bean name 的区别
SnakeMoving
博客等级 码龄11年 65粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值