javaScript中Dom编程

《JavaScript DOM 编程艺术》(第2版)之读后感悟 在阅读完第一本书——《JavaScript DOM编程艺术》之后,有一些自己的感悟和理解,顺带把书中的一些常用的原生JS所写的方法罗列出来,以供参考和使用。 阅读详情

Dom编程

概念

dom: document  object model  文档对象模型

DOM技术:

       php里边有:php语言 与 xml/html标签之间沟通的一个桥梁。

       javascript里边有:js语言 与 html/xml标签之间沟通的一个桥梁。

为了方便javascript语言通过dom操作html比较方便,

把html标签的内容划分为各种节点:

文档节点(document)

元素节点

文本节点

属性节点

注释节点

dom就是学习利用javascript如何实现对html标签内容的增、删、改、查等操作

获取元素节点

具体操作方法:

document.getElementById(id属性值);

document.getElementsByTagName(tag标签名称);

document.getElementsByName(name属性值);不推荐,有浏览器兼容问题,通常应用在form表单里边。

案例一:

 

<html>

    <body>

        <h2>获取元素节点</h2>

        <input type="text" id="username" value="tom" /><br />

        <input type="text" id="useremail" value="tom@163.com" /><br />

    </body>

</html>

<script type="text/javascript">

//① document.getElementById();  id属性值获得元素节点 

var name = document.getElementById('username');

console.log(name);

var email = document.getElementById('useremail');

console.log(email);

</script>

案例二:

<script type="text/javascript">

         //② document.getElementsByTagName(tag标签名);  tag标签名称获得元素节点

         var hh = document.getElementsByTagName('h2');

         console.log(hh);//HTMLCollection[h2]

         //通过 getElementsByTagName 收集的元素节点以"集合/数组"(即时只有一个节点)的形式返回

         console.log(hh[0]);

        

         var its = document.getElementsByTagName('input');

         console.log(its);//HTMLCollection[input#username 属性(attribute)值 = "tom", input#useremail 属性(attribute)值 = "tom@163.com"]

         console.log(its[1]);//访问具体节点

         console.log(its.item(0));//访问具体节点

</script>

 

案例三:

<body>

        <h2>获取元素节点</h2>

        <input type="text" name="username" value="tom" /><br />

        <input type="text" name="useremail" value="tom@163.com" /><br />

        <div>today is very good</div>

    </body>

</html>

<script type="text/javascript">

//③ document.getElementsByName(name属性值);  name属性值获得元素节点

//通过 getElementsByTagName 收集的元素节点以"集合/数组"(即时只有一个节点)的形式返回

var it = document.getElementsByName('username');

console.log(it); //NodeList[input 属性(attribute)值 = "tom"]

 

console.log(it[0]);//<input type="text" value="tom" name="username">

console.log(it.item(0));//<input type="text" value="tom" name="username">

</script>

获取文本节点

<div>hello</div>

需要借助div元素节点再获得其内部的文本节点.

var dvnode = document.getElementsByTagName(‘div’)[0];

dvnode.firstChild;  //(或调用lastChild)获得元素div内部的第一个子节点对象

<body>

        <h2>文本节点获取</h2>

        <input type="text" name="username" value="tom" /><br />

        <input type="text" name="useremail" value="tom@163.com" /><br />

        <div>today is very good</div>

    </body>

</html>

<script type="text/javascript">

//获得div内部的文本节点

var dv = document.getElementsByTagName('div')[0];

//firstChild获得第一个子节点/lastChild获得最后一个子节点

console.log(dv.firstChild);//<TextNode textContent="today is very good">

console.log(dv.firstChild.nodeType);//3

console.log(dv.firstChild.wholeText);//today is very good    //获得文本信息

</script>

兄弟节点

firstChild、lastChild:父节点获得第一个/最后一个子节点

nextSibling:获得下个兄弟节点

previousSibling:获得上个兄弟节点

childNodes:父节点获得内部全部的子节点信息

以上属性在主流浏览器(火狐firefox、chrome、safari、opera)中会给考虑空白节点。在IE浏览器中不考虑。

<body>

        <h2>兄弟节点获取</h2>

        <ul>

            <li>red</li>

            <li>blue</li>

            <li>green</li>

        </ul>

    </body>

</html>

<script type="text/javascript">

         var ull=document.getElementsByTagName('ul').item(0);

         console.log(ull.childNodes);

         console.log(ull.childNodes.length);//7

         console.log(ull.firstChild);//#text

         console.log(ull.firstChild.nextSibling);//<li>red</li>

         console.log(ull.lastChild);//#text

         console.log(ull.lastChild.previousSibling);//<li>green</li>

</script>

父节点

.parentNode

<body>

        <h2>兄弟节点获取</h2>

        <ul>

            <li>red</li>

            <li>blue</li>

            <li>green</li>

        </ul>

    </body>

</html>

<script type="text/javascript">

         var blue=document.getElementsByTagName('li')[1];

         console.log(blue.parentNode);//ul

         console.log(blue.parentNode.parentNode);//body

         console.log(blue.parentNode.parentNode.parentNode);//html

         console.log(blue.parentNode.parentNode.parentNode.parentNode);//htmldocument

         console.log(blue.parentNode.parentNode.parentNode.parentNode.parentNode);//null

</script>

属性值操作

<input type=”text”  name=”username”  value=”tom” class=”orange” />

<a href=”http://www.baidu.com”  addr=’beijing’ target=”_blank”>百度</a>

①     获取属性值

itnode.属性名称;   //只能操作w3c规定的属性

itnode.getAttribute(属性名称);  //规定的 和 自定义的都可以获取

②     设置属性值

itnode.属性名称 = 值;  //只能操作w3c规定的属性

itnode.setAttribute(名称,值); //规定的 和 自定义的都可以设置

<body>

        <h2>属性值操作</h2>

        <a href="http://www.baidu.com"  addr='beijing' target="_blank" class="apple">百度</a><br />

        <input type="button" value="修改属性" onclick="f1()" /><br />

    </body>

</html>

<script type="text/javascript">

         var baidu = document.getElementsByTagName('a')[0];

         //① 获得属性的信息

         console.log(baidu.href);

         console.log(baidu.target);

         console.log(baidu.className);//apple /className是class的一个别名,不可以直接访问class属性

         console.log(baidu.addr);//undefined

         console.log(baidu.getAttribute('href'));//http://www.baidu.com

         console.log(baidu.getAttribute('addr'));//beijing

         console.log(baidu.getAttribute('target'));//_blank

        

         //② 设置属性的信息

         function f1(){

             baidu.href = "http://www.163.com";

             baidu.target = "_self";

             baidu.addr = "tianjin";

             //属性修改有就更新、没有就创建

             baidu.setAttribute('addr','shanghai');

             baidu.setAttribute('height','170');//新创建

         }

</script>

属性节点的获取

var attrlist = itnode.attributes;  //返回对应节点内部的全部属性信息,数组列表形式返回

attrlist.属性名称;   //获得具体属性节点

 

获得节点类型nodeType:

1------> 元素节点

2------> 属性节点

3------> 文本节点

9------> 文档节点

<body>

        <h2>属性节点获取</h2>

        <input  type="text"  name="username"  value="tom"  class="orange" id="username" /><br />

        <!--sldjlsjdoks-->

        <input type="button" value="修改属性" onclick="f1()" /><br />

    </body>

</html>

<script type="text/javascript">

         var name = document.getElementById('username');

         var attrs = name.attributes;//把name元素节点对象的全部属性以"数组"形式给返回出来

         console.log(attrs);//[type="text", id="username", class="orange", value="tom", name="username"]

         console.log(attrs.id); //获得id"属性节点"  id="username"

         console.log(attrs.class); //获得id"属性节点"  class="orange"

         console.log(attrs.class.nodeType); //2

         console.log(name.nodeType); //1

         //节点.nodeType:判断节点类型  1->元素节点  2->属性节点  3->文本节点   9->document节点

</script>

节点的创建和追加

节点创建

元素节点:document.createElement(tag标签名称);

文本节点:document.createTextNode(文本内容);

属性设置:node.setAttribute(名称,值);

节点追加:

父节点.appendChild(子节点);

    父节点.insertBefore(newnode,oldnode); //newnode放到oldnode的前边

         父节点.replaceChild(newnode,oldnode); //newnode替换到oldnode节点

<body>

        <h2>节点创建和追加</h2>

    </body>

</html>

<script type="text/javascript">

         /**

             <ul>

                 <li mean="热情">red</li>

                 <li mean="冷静">blue</li>

                 <li mean="生机">green</li>

             </ul>

         */

         var color = ['red','blue','green'];

         var color_mean = ['热情','冷静','生机'];

         //创建各种节点

         var ull = document.createElement('ul');

         for(var k in color){

             var lii = document.createElement('li');

             lii.setAttribute('mean',color_mean[k]);

             var txt = document.createTextNode(color[k]);

            

             //节点追加

             lii.appendChild(txt);

             ull.appendChild(lii);

         }

         //document.getElementsByTagName('body')[0].appendChild(ull);

         document.body.appendChild(ull);

</script>

节点复制操作

被复制节点.cloneNode(true/false);

true:深层复制

false:浅层复制

<div id=”apple”>hello</div>

 

<body>

        <h2>节点复制追加</h2>

        <ul>

            <li mean="热情">red</li>

            <li mean="冷静">blue</li>

            <li mean="生机">green</li>

        </ul>

        <ul>

            <li mean="饿">orange</li>

        </ul>

    </body>

</html>

<script type="text/javascript">

         var blue = document.getElementsByTagName('li')[1];

         var fu_blue = blue.cloneNode(true);//深层复制(本身和内部子节点都复制)

         var fu_blue = blue.cloneNode(false);//浅层复制(本身(包括属性)节点给复制)

        

         //把复制的fu_blue追加到第二个ul里边

         var second_ul = document.getElementsByTagName('ul')[1];

         second_ul.appendChild(fu_blue);

</script>

节点删除

父节点.removeChild(子节点);

<body>

        <h2>节点删除操作</h2>

        <ul>

            <li mean="热情">red</li>

            <li mean="冷静">blue</li>

            <li mean="生机">green</li>

        </ul>

        <ul>

            <li mean="饿">orange</li>

        </ul>

    </body>

</html>

<script type="text/javascript">

         //删除green节点

         var green = document.getElementsByTagName('li')[2];

         var red = document.getElementsByTagName('li')[0];

         green.parentNode.removeChild(green);

         red.parentNode.removeChild(red);

</script>

dom操作css属性

<div style=”width:300px; height:200px;background-color:pink;”></div>

①     获取css样式

元素节点.style.css样式名称;

divnode.style.width;  //获取宽度样式

②     设置css样式(有则修改、没有则添加)

         元素节点.style.css样式名称 = 值;

divnode.style.width =‘500px’;设置div宽度样式

 

注意:

①     dom操作css样式只能操作“行内样式”(css样式分为 行内、内部、外部)

②     操作属性样式例如background-color/border-left-color,

需要变为backgroundColor、borderLeftColor,中恒线去掉,后边首字母大写。

<body>

        <h2>操作css样式</h2>

        <div style="width:300px; height:200px; background-color:lightblue;">利用dom操作css</div>

        <input type="button" value="获取css" onclick="f1()" /><br />

        <input type="button" value="设置css" onclick="f2()" /><br />

    </body>

</html>

<script type="text/javascript">

         var dv = document.getElementsByTagName('div')[0];

         function f1(){

             //获取

             console.log(dv.style.width);//300px;

             console.log(dv.style.height);//200px

             console.log(dv.style.backgroundColor);//lightblue

         }

         function f2(){

             //设置(有则更新,没有就创建)

             dv.style.color = "red";

             dv.style.backgroundColor = "lightgreen";

             dv.style.width = "600px";

         }

</script>

JavaScript DOM编程 # 二 接下来研究一下如何局部加载新的内容——使用Ajax。 这里我们引入Ajax,实现页面中的局部更新。(注意同源策略) ajax.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>Ajax</title> </head>... 阅读详情

相关推荐

深入探讨JavaScript页面生命周期事件:onload, onunload, onbeforeunload

onunload事件是当用户离开页面或者关闭浏览器标签页时触发的 JavaScript 事件。它常用于执行清理操作,如关闭数据库连接、删除临时文件或通知服务器用户已离开。onunload事件处理函数通常与window对象关联。是一个浏览器事件,它在窗口、文档或其资源即将卸载之前触发。这个事件允许页面在被关闭或刷新之前执行一些清理工作,或者提示用户是否真的想要离开当前页面。这个事件对于执行确认操作特别有用,比如防止用户丢失未保存的数据。为了自定义。

weixin_34640289的博客 2009

JavaScript中onload()用法

实例: 页面加载之后立即执行一段 JavaScript: <html> <head> <script> function load() { alert("页面已加载!"); } </script> </head> <body "load()"> <h1>Hello World!</h1> </body> </html> 定义和用法 onloa

m0_49273322的博客 7386

卡门涡街可视化实战:从网格加密策略到动画后处理技巧

本文详细介绍了利用ANSYS Fluent进行卡门涡街可视化模拟的全流程,包括网格加密策略、求解器设置、涡街捕捉及动画后处理技巧。通过计算流体力学(CFD)方法,帮助工程师和研究人员高效模拟圆柱绕流现象,优化工程设计。

weixin_29309785的博客 414

js onload 事件

事件是当页面或者页面中的某个元素完全加载完成时触发的事件。常见的使用场景包括在页面加载完成后执行一些初始化操作,或者在图片加载完成后执行某些操作。当图片加载完成后,这个事件处理函数会被调用。事件是在页面或元素加载完成后触发的事件,在JavaScript中可以使用。每当一个元素加载完成后,对应的事件处理函数会被调用。在这个例子中,匿名函数会在页面加载完成后被调用。属性,可以指定页面加载完成后需要执行的函数。需要注意的是,如果图片已经在缓存中存在,那么。函数会在页面加载完成后被调用。在这个例子中,我们使用。

猿码互联 2092

ubuntu安装英伟达显卡驱动后wifi消失解决方法

ubuntu安装英伟达显卡驱动后(比如4090和3090等),会把wifi和蓝牙驱动去除,导致wifi无法连接。需要重新下载驱动安装。

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 3903

卡方检验的隐藏逻辑:为什么正态分布的平方和如此重要?

本文深入探讨了卡方检验的核心逻辑,揭示了正态分布平方和在统计检验中的重要性。通过分析卡方分布与伽马分布的关系,以及实际应用案例,帮助读者理解卡方检验的原理、局限及高级应用场景,为数据分析提供有力工具。

3a9bq4r8t2y的博客 208

js中的onload

js中的onload事件,有两种写法。 1.放在body中 function load() { alert("页面已加载!"); } Hello World! 意思上当body标签加载完毕之后,执行onload后面gender那个load函数。 2.放在script标签中。 //onload 当页面加载完毕 执行, 页面的标签创建完成并且页面依赖的外部文

guangbing8877的博客 2793

深度学习CV八股文

深度学习CV八股文一、深度学习中解决过拟合方法L1和L2正则化DropoutDropout正则化Inverted Dropout(反向随机失活)Dropout起到正则化效果的原因:Dropout的缺点eargstopping ( 早停法 )二、深度学习中解决欠拟合方法三、梯度消失和梯度爆炸解决梯度消失的方法解决梯度爆炸的方法四、神经网络权重初始化方法Xavier指数加权移动平均数五、梯度下降法梯度下降SGD(随机梯度下降法)Momentum(动量梯度下降)Nesterov Momentum自适应学习率算法A

填坑 2万+

JS-onload事件

window.onload事件是页面中所有元素加载完成后,浏览器自动触发该事件,这样,注册dom事件的脚本就可以放在head里面了 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt;     &lt;meta charset="utf-8" /&gt;     &lt;title&gt;&lt;/title&gt;     &lt;scri

dxm809的博客 1万+

使用在UE5中使用AirSim插件Eigen库头文件引用报错,出现报错的解决方式

如图所示,用红线圈出的两条头文件引用会报错,提示无法找到他们,但是可以发现的是,他们的路径书写是没有问题的。在终端中运行时候,会出现如下的报错。

GFCLJY的博客 1006

磁盘I/O %util特别高

磁盘I/O %util特别高

eagle89的专栏 3088

JavaScript——DOM编程、JS的对象和JSON

JavaScript——DOM编程、JS的对象和JSON

雷神乐乐的博客 1545

双目相机立体匹配算法概述(含Python代码)

立体匹配任务是计算机视觉中的一个重要问题,旨在从一对具有相同场景的图像中估计每个像素的视差(disparity)。本文对现有的传统算法和深度学习算法进行了综述,以便于各位选择合适的立体匹配算法用于深度估计或三维建模。

m0_59257547的博客 8291

JavaScript DOM编程

目录 一、什么是DOM? 二、动态改变文档内容的原理 三、Element常用属性 四、常用方法 1.创建和增加节点的方法 2.删除和替换节点的方法: 3.其他方法 五、使用JS操作表格 总结: 一、什么是DOM? 文档对象模型(Document Object Model) 通过DOM可以动态改变文档内容 二、动态改变文档内容的原理 解析文档(如HTML)并生成DOM树 通过DOM标准接口+编程语言改变文档内容 解析文档生成DOM树的过程 .

weixin_62270300的博客 967

Xilinx FPGA资源解析与使用系列——Transceiver(六)关键时钟梳理之TXOUTCLK和RXOUTCLK

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Xilinx FPGA资源解析与使用系列——Transceiver(六)transceiver内部关键时钟梳理之TXOUTCLK和RXOUTCLK前言TXOUTCLKRXOUTCLK 前言 前面我们已经研读了 transceiver的参考时钟 和复位的相关内容。 但是随着内容的深入,越来越多的信号出现在我的面前。 例如 TXOUTCLK、TXUSERCLK、TXUSERCLK2 RXOUTCLK、RXUSERCLK、RXUSERCLK2

gzy0506的博客 8088

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【我的JS第三本】JavaScript_DOM编程艺术第二版读书笔记

经过前一段时间HTML&CSS的学习,感觉视频加读书是一个比较不错的学习方法,两者相辅相成,互相补充,所以也准备看看关于JavaScript的书。       2015年12月14日,之前使用韩顺平老师的教学视频学习了JavaScript,复习了之前的学习笔记后,我发现看视频理解虽然没问题,但是很多细节,关键词,都没能记住,而且对于对象,DOM变成的理解都不够深入,只是简单的知道它们能够实现什么

Creabine的博客 5360

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

JavaScript DOM 编程艺术

《JavaScript DOM 编程艺术》是JavaScript入门级的书,主要以案例形式推进学习,下面是我的读书笔记。   第二章 JavaScript语法 1、用JavaScript编写的代码必须通过HTML/XHTML文档才能执行。 第一种方式是将JavaScript代码放到文档&lt;head&gt;标签中的&lt;script&gt;标签之间。 一种更好的方式是把JavaScr...

lucky_jiexia的博客 733

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

JavaScript的BOM、DOM编程

参考笔记:JavaWeb 速通DOM_java dom-优快云博客目录1.JS的组成部分2.BOM编程 2.1 基本介绍2.2 BOM的构成2.3 图解BOM编程 2.4 windows对象的常见属性2.5 windows对象的常见方法2.6 BOM编程的简单示例2.6.1 三种弹窗方式​2.6.2 页面跳转2.6.3 实现会话级存储和持久级数据存储(重要)3.DOM编程3.1 基本介绍3.2 常见方法表3.2.1 查找HTML元素3.2.2 改变HTML元素3.2.3 添加和删除元素3.2.4 元素添加

m0_55908255的博客 840

JavaScript — DOM编程

1. DOM树结构文档由节点(元素、属性、文本等)构成的树形结构,document对象是入口。元素节点可通过getElementById、querySelector、getElementsByClassName等方法获取。2. 节点操作增删改:createElement、appendChild、removeChild、replaceChild。属性/内容:setAttribute、textContent、innerHTML。3. 事件处理。

2403_89893216的博客 1230

JavaScript dom编程-在什么位置编写js代码

JavaScript dom编程-在什么位置编写js代码 在什么位置编写js代码合适呢? 总结:js代码写在head标签中,并且放在title标签后面,写在script标签中,但是最好不要直接写在script标签中,而是写在window.onload事件的function里边的函数体中最合适,参照如下写法是比较规范的写法: &lt;html&gt; &lt;head&gt; &lt;meta...

一只苟延残喘的卑微蝼蚁 852

JavaScript+DOM编程艺术笔记(一)

Javascript与DOM的笔记系列

Autovy blog 397

【javaScript】DOM编程入门

为什么要由DOM编程来动态修改呢?我们就得先理解网页的运行原理:如上图,程序员编写的html文件存储在服务器端,而用户使用的浏览器则由url与服务器实现交互,将服务器上的html文件经过一定规则转换传递到浏览器本地的document对象中,接着再通过浏览器解码展示document对象上的元素这时我们去思考一个问题,如果我们要根据用户的操作来修改页面上展示的元素的话,直接去修改服务器中的html文件肯定是十分不现实的,就算可行,其效率也会十分低下。事实上,服务器端的html文件写完后一般就不会轻易去修改了。那

acm_pn的博客 1654

JavaWeb JavaScript 8.DOM编程

DOM(Document obiect Model)编程就是使用document对象的API完成对网页HTML文档进行动态修改,以实现网页数据和样式动态变化效果的编程。

m0_73983707的博客 1321

JavaScript Dom编程第一天

JavaScript Dom编程 在什么地方编写js代码 先明确Dom的定义:Document Object Model(文本对象模型) D:文档(html文档,xml文档)O:对象(document对象的属性和方法)M:模型 Dom是针对xml(html)的基于树的api。 helloworld.html 在这里插入代码片<!DOCTYPE html> <html> &l...

qq_41667276的博客 171

JavaScript与DOM编程

文章目录JS简介常量与变量 JS简介 JS是一种在浏览器中运行的解释性脚本语言。JS是由ES(ECMAScript),DOM(文档对象模型),BOM(浏览器对象模型)组成 ECMAScript 6.0(简称 ES6)是JavaScript语言的下一代标准,已经在2015年6月发布。它的目标是使得JavaScript语言可以用来编写复杂的大型应用程序,称为企业级开发语言 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,是让JS运行在服务端的开发平台,它使得JS成为与PHP,Py

寻梦&之璐 6648

JavaScript:DOM编程

本文主要介绍的是在JavaScript中有关于DOM编程的知识点内容

2501_90297049的博客 1234
上一篇: 建造者设计模式
下一篇: Java中的操作符
午-夜
博客等级 码龄12年 95粉丝 133原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值