精华内容
下载资源
问答
  • 经过调试发现是在新增节点后,执行DOM操作获取节点时,取到的仍是之前的结构,新增的节点并未获取到。 原因分析: 猜测是vue使用的虚拟DOM,使得页面虽然已经渲染出来,但在Vue实例中让处在在虚拟DOM中,无法获取。 ...
  • 本篇文章主要介绍了JavaScript中 DOM操作方法小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 下面小编就为大家带来一篇DOM操作和jQuery实现选项移动操作的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 主要介绍了微信小程序dom操作的替代思路,结合实例形式分析了微信小程序通过事件响应、动态操作元素属性来实现dom操作效果,需要的朋友可以参考下
  • 易语言源码易语言DOM操作源码.rar
  • 易语言DOM操作源码

    2020-08-20 00:55:53
    易语言DOM操作源码系统结构:易语言DOM操作源码,DOM操作 ======窗口程序集1 || ||------_按钮1_被单击 || ||------_超文本浏览框1_状态文本被改变 || ||------_按钮2_被单击 || ||------_按钮3_被单击 |
  • 关于jQuery的DOM操作面试问题其实有很多,下面这篇文章主要给大家介绍了jQuery常见面试题之DOM操作的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
  • 主要给大家介绍了Angular2学习教程之组件中DOM操作的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来看看吧。
  • 迷你DOM操作

    2019-08-10 04:39:36
    这是一个微型的库,包含最常用的dom操作,压缩后只有2KB。
  • 易语言源码超文本浏览框全套DOM操作.rar 易语言源码超文本浏览框全套DOM操作.rar 易语言源码超文本浏览框全套DOM操作.rar 易语言源码超文本浏览框全套DOM操作.rar 易语言源码超文本浏览框全套DOM操作.rar ...
  • 主要介绍了JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法,涉及javascript dom模型及事件响应相关操作技巧,需要的朋友可以参考下
  • 具有jQuery兼容API的用于DOM操作的简约JavaScript库 Dom7-是默认的DOM操作库内置 。 它利用大多数边缘和高性能方法进行DOM操作。 您不需要学习任何新知识,它的用法非常简单,因为它具有与众所周知的jQuery库相同的...
  • js基础操作,以及js核心 BOM和DOM操作
  • jQuery 中DOM 操作详解

    2020-12-09 16:11:29
    jQuery 中的 DOM 操作 DOM(Document Object Model—文档对象模型):一种与浏览器,平台, 语言无关的接口,使用该接口可以轻松地访问页面中所有的标准组件 DOM 操作的分类: DOM Core: DOM Core 并不专属于 JavaScript, ...
  • jQuery 中的 DOM 操作

    2020-11-23 18:57:53
    DOM 操作的分类: DOM Core: DOM Core 并不专属于 JavaScript, 任何一种支持 DOM的程序设计语言都可以使用它. 它的用途并非仅限于处理网页,也可以用来处理任何一种是用标记语言编写出来的文档, 例如: XML HTML DOM: ...
  • 常见的DOM操作有哪些

    万次阅读 多人点赞 2019-05-16 14:51:59
    【常见的DOM操作有哪些】 这里是修真院前端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析前端知识/技能,本篇...

    这里是修真院前端小课堂,本篇分析的主题是

    【常见的DOM操作有哪些】

     

    这里是修真院前端小课堂,每篇分享文从

    【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

    八个方面深度解析前端知识/技能,本篇分享的是:

    【常见的DOM操作有哪些】


    1.背景介绍

            什么是DOM?简单地说,DOM是一套对文档的内容进行抽象和概念化的方法

            在现实世界里,人们对所谓的'世界对象模型'都不会陌生,例如,当用'汽车'、'房子'和'树'等名词来称呼日常生活环境里的事物时,我们都可以百分百的肯定对方知道我们说的是什么,这是因为人们在对这些名词所代表的的东西有着相同的认知。于是,当对别人说"汽车停在车库里"时,可以断定他们不会理解为"小鸟关在壁橱里"

            我们的"世界对象模型"不进可以用来描述客观存在的事物,还可以同来描述抽象概念。例如,假设有个人想我问路,而我给出的答案是"左边第三栋房子",这个答案有没有意义取决于那个人能够理解"左边"和"第三"的含义。如果他不会数数或者分不清左右,则不管他是否理解这几个概念,我的回答对他都不会有任何的帮助。在现实世界中,正是因为大家对抽象的"世界对象模型"有着基本的共识,人们才能用非常简单的话来表达出复杂的含义并得到对方的理解。

            而DOM的定义则是由W3C所制定的标准,定义为"一个与系统平台和编程语言无关的接口,程序和脚本可以通过这个接口动态地访问和修改文档的内容`、结构和样式。"


     

    2.知识剖析

            2.1. 节点是什么

            节点这个词是一个网络用语,代表了网络中的一个连接点。一个网络就是由一些节点构成的集合。

            在现实世界中,一切事物都由原子构成。原子就是现实世界的节点。但是原子同样还可以进一步分解为更细小的亚原子微粒。这些亚原子微粒同样也是节点。

            DOM也是同样的情况。文档是由节点构成的集合,只不过此时的节点是文档树上的树枝和树叶而已。

            在DOM中有许多不同类型的节点。就像原子包含着亚原子微粒那样,也有很多类型的DOM节点包含着其他类型的节点。接下来我们先看看其中的三种:元素节点、文本节点和属性节点。

            2.2. 元素节点

            在DOM中的原子就是元素节点。

            像是我们现在所看到的这个网页,我们在编写时,会用到诸如<body>、<head>、<p>这些元素。如果把Web上的文档比作一座大厦,那么元素就是建造这座大厦的砖块,这些元素在在文档中的布局形成了文档的结构。元素可以包含其他的元素,在我们所看到的页面页中,内容都被包含在在一个<section>元素的内部。而唯一没有被包含在其他元素中的唯一元素是'<html>',他和我们的节点树的根元素,其他的所有元素都被包含在'<html>'中。

    网页的部分节点树

            2.3. 文本节点

            元素节点只是节点类型的一种。如果一份文档完全有一些空白元素构成,他将有一个结构,但这份文档本身将不会包含什么内容。

            在我们的ppt首页中,'<p>'元素包含着文本,'分享人:刘洪利'。他就是一个文本节点。在html文档里,文本节点总是被包含在元素节点的内部。

            2.4. 属性节点

            属性节点用来对元素做出更具体的描述。例如,几乎所有的元素都有一个title属性,而我们可以利用这个属性对包含在元素里的东西做出准确的描述:'<p title="a gentle reminder">这是一个带有温馨提示的p标签</p>'

            在DOM中,title="a gentle reminder"是一个属性节点。因为属性总是被放在起始标签里,所以属性节点总是被包含在元素节点中。并非所有的标签都包含着属性,但是所有的属性都被元素包含。

    元素的构成

            2.5. 常见的DOM操作

     

    获取DOM

            通过使用 getElementById() 方法匹配元素的id属性来访问元素节点,对元素节点进行操作

            通过使用 getElementsByTagName() 方法匹配元素的tagName来访问元素节点,对元素节点进行操作

            通过使用 getElementsByClassName() 方法匹配元素的className来访问元素节点,对元素节点进行操作

            值得注意的是, getElementsByTagName() 和 getElementsByClassName() 这两种方法因为其访问的是节点中的可能为复数的属性,所以得到的会是一个以数组的形式来体现出来的元素节点集合,我们可以通过打印获取到的DOM节点来判断类型

                                                                                                            demo

    DOM事件

            onclick事件---当用户点击时执行

            onload事件---当用户进入时执行

            onunload事件---用用户离开时执行

            onmouseover事件---当用户鼠标指针移入时执行

            onmouseout事件---当用户鼠标指针移出时执行

            onmousedown事件---当用户鼠标摁下时执行

            onmouseup事件---当用户鼠标松开时执行

                                                                                                            demo


    3. 常见问题

    如何通过class和tag调用元素?如何对其设置属性?


    4.解决方案

    在一个页面中常常有多个class相同的元素,也有多个标签相同的元素,在调用时方法如下

                                                                                                            demo


    5. 扩展思考

            onblur事件---当对象失去焦点时发生

            onchange事件---当对象域的值被改变时发生

            button 事件---属性可返回一个整数,指示当事件被触发时哪个鼠标按键被点击。

            更多的事件就不一一的描述了,有兴趣的同学可以去看下这个

                                                                                                         w3school


    6. 参考文献

    书籍:《JavaScript DOM编程艺术》

    网址:w3school


    7.更多讨论

                Q:dom操作是异步的吗

                A:dom的操作其实是同步的,但是渲染是异步的。因为JavaScript引擎线程跟GUI渲染线程是互斥的,即我执行的时候,你就靠边站,我执行完你才能执行。具体的可以看下这篇文章https://segmentfault.com/a/1190000005803237----《关于修改DOM是异步还是同步的问题

                Q:除了getElementsByClassName()、getElementsByTagName()、getElementById()还有什么可以获取dom节点的方法

                A:

    1.通过节点属性得到元素

                        1)node属性:来获取节点的名称、类型、值。

    js代码:

                        window.οnlοad=function(){ 子节点

                            var pox = document.getElementById('pox');

                            alert(pox.childNodes.length) //子节点数量

                            alert(pox.childNodes[0].nodeValue); // 第一个子节点的内容

                            alert(pox.firstChild.nodeValue);  // 第一个子节点的内容

                            alert(pox.lastChild.nodeValue); // 最后一个节点的内容

                        };

            注意:node只能获取当前节点的东西,在上面的js代码中node本身把节点指针放在元素上,所以本身没有value值,

    2.层次节点属性:层级节点可以分为父子节点和兄弟节点,通过当前节点可以获取其他层次的节点。

            2.1)子节点childNodes、第一个字节点firstChilds、最后一个子节点lastChilds。

    js代码:

            window.οnlοad=function(){ 子节点

                var pox = document.getElementById('pox');

                alert(pox.childNodes.length) //子节点数量

                alert(pox.childNodes[0].nodeValue); // 第一个子节点的内容

                alert(pox.firstChild.nodeValue);  // 第一个子节点的内容

                alert(pox.lastChild.nodeValue); // 最后一个节点的内容

            };

            2.2)父节点parentChild、兄弟节点previousSibing,nextSibing。

    js代码:

            window.οnlοad=function(){ 父节点,上下节点

                var pox = document.getElementById('pox');

                alert(pox.parentNode);    //pox节点的父节点body节点

                alert(pox.firstChild.nextSibling);    //pox节点的子节点中第一个节点的下一个节点

                alert(pox.lastChild.previousSibling);  //pox节点的子节点中最后一个节点的上一个节点

                alert(pox.lastChild.previousSibling.nodeName)

            };

    本回答摘自-----------《获取元素节点(DOM基础 )》http://blog.csdn.net/u010928364/article/details/43935875

                Q:dom操作的最佳实践应该是什么样的

                A:

                        1. 平稳退化:正确的使用JavaScript脚本,让访问者在他们浏览器不支持JavaScript的情况下仍能顺利的浏览你的网站,即是有些功能无法使用,但最基本的操作仍能顺利完成。

                        2. 分离JavaScript:将HTML内部DOM事件分离到外部来,保证HTML的纯净,同时可以在外部js文件通过获取DOM节点来给这个节点添加事件的形式来运行外部JavaScript文件。

                        3. 向后兼容:因为不同浏览器对JavaScript的支持程度也不一致,绝大多数的浏览器都可以或多或少的支持JavaScript,,但比较古老的浏览器却很有可能无法理解DOM提供的方法和脚本。因此,我们通过以下几点来确保那些古老的浏览器不会因为脚本代码而出问题。

                                3.1. 对象检测:检测浏览器对JavaScript的支持程度。我们可以通过将某种方法打包在一个if语句中,然后根据这条语句的条件表达式的求值结果为true(这个方法存在)还是false(这个方法不存在)来决定应该采取怎么样的行动。

                                例如,如果有一个使用了getElementById()方法的函数么就可以在调用getElementById()方法之前先检查用户所用的浏览器是否支持这个方法。在使用对象检查时,一定要删除方法名后面的圆括号,如果不删掉,测试的将是方法的结果,无论方法是否存在

                                代码:

    if( ! document.getElementById ) return false;

     

                        4. 性能考虑: 为保证应用流畅的运行,在为文档编写和应用脚本时,需要注意一些问题。

                                4.1. 尽量少访问DOM和尽量减少标记

                                        访问DOM的方式对脚本性能会产生很大的影响。例如当我们需要访问html页面中所有的div元素来找到我们想要的那个节点,我们不知道会有多少div元素来面对着我们,所以浏览器会去搜索整个DOM树,从中查找可能匹配的元素。

                                        另一个是尽量减少文档中的标记数量。过多不必要的元素只会增加DOM树的规模,进而增加遍历DOM树以查找特定元素的时间。

                                4.2. 合并和放置脚本

                                        我们通过合并外部JavaScript文件来减少加载页面时发送的请求数量。减少请求数量通常都是在性能优化时优先考虑的。

                                4.3. 压缩脚本

                                        通过将脚本文件中不必要耳朵字节,如空格和注释统统删除,从而达到“压缩文件”的目的。


     

     

    展开全文
  • dom操作一般可以分为三个方面即DOM Core(核心)、HTM-Dom和CSS-DOM。  每一个网页都可以用DOM表示出来,每个DOM都可以看作是一棵DOM树。下面的html页面结构可以构建出一棵DOM树,代码: 代码如下: <!DOCTYPE ...
  • DOM操作实用程序 dom101是一组用于将DOM操纵为单个文件的实用程序。 aka:停止使用jQuery。 var addClass = require ( 'dom101/add-class' ) ; el = document . createElement ( 'div' ) ; addClass ( el , '...
  • Javascript_Dom操作案例

    2013-01-10 09:27:25
    Javascript_Dom操作案例 总结了一些javascript对DOM操作的案例,希望对大家有所帮助
  • DOM操作的分类:DOM CORE(核心)、HTML-DOM和CSS-DOM 1. DOM Core DOM Core并不专属于javascript,任何一种支持DOM的程序设计语言都可以使用它。 它的用途并非仅限于处理网页,也可以用来处理任何一种使用标记语言...
  • 真实DOM操作和虚拟DOM操作的比较

    千次阅读 2019-04-21 19:31:56
    <div></div> <script> let box=document.getElementsByTagName('div');//获取DIV元素 // time和timeEnd结合使用可以计算中间区域的耗时 ... //DOM操作 console.time('a')...
        <div></div>
        <script>
            let box=document.getElementsByTagName('div');//获取DIV元素
            // time和timeEnd结合使用可以计算中间区域的耗时
            
            //DOM操作
            console.time('a');
            for (var i=0;i<=10000;i++){//这里操作了10000次DOM元素
               box[0].innerHTML=i;
            }
            console.timeEnd('a');
            
            //数据操作
            let num=0;
            console.time('b');
            for(let i =0;i<=10000;i++){//这里进行了10000次数据计算
              num=i;
            }
            box[0].innerHTML+=num;//最后将数据给了DOM元素
            console.timeEnd('b');
       </script>

    得出结果非常的直观:

    在这里插入图片描述

    两种方式通过相同次数的操作得出相同的结果,明显,在这次实验中数据可以发现,将近有了40倍的差距,所以证明了DOM操作的性能是非常的差的,这是非常可怕的,这也是为什么我们要用数据操作替代DOM操作的原因了!

    展开全文
  • 复制节点也是常用的DOM操作之一,例如很多购物网站的效果,本文将介绍jQuery移动和复制dom节点等实用DOM操作,有需的朋友可以参考下
  • 主要介绍了AngularJS中的DOM操作,较为详细的分析了AngularJS针对DOM操作的原理、实现技巧与相关注意事项,需要的朋友可以参考下
  • 主要介绍了JavaScript学习笔记之DOM操作,结合实例形式分析了javascript针对dom元素的获取、设置相关操作常用函数使用技巧,需要的朋友可以参考下
  • JS DOM 操作实现代码

    2020-10-28 23:42:01
    JS DOM 操作实现代码,学习dom操作的朋友可以参考下。
  • 常见的DOM操作方式有哪些

    千次阅读 2020-07-09 14:49:28
    换句话说,按照DOM的标准,HTML和XML都是以标签为结点构造的树结构,DOM将HTML和XML的相同的结构本质抽象出来,然后通过脚本语言,如Javascript,按照DOM里的模型标准访问和操作文档内容。 在Chrome浏览器端,单击...

    1.背景介绍
    什么是DOM?

    DOM全称是Document Object Model(文档对象模型),是为HTML和XML提供的API。那么为什么DOM可以同时提供给HTML和XML编程接口。虽然他们用来标记的标签不同,但是他们本质的结构是相同的。换句话说,按照DOM的标准,HTML和XML都是以标签为结点构造的树结构,DOM将HTML和XML的相同的结构本质抽象出来,然后通过脚本语言,如Javascript,按照DOM里的模型标准访问和操作文档内容。

    在Chrome浏览器端,单击右键打开View Page Source展示文档结构。通过这种方式可以直观的看到文档当前的内容和结构。DOM则不同,它是提供一个API给编程语言,比如Javascript,通过一系列抽象的方法操作文档的内容,结构和样式。

    官方介绍结束,现在用人话来理解:

    在现实世界里,我们对所谓的’世界对象模型’都不会陌生,例如,当用’汽车’、'房子’和’树’等名词来称呼日常生活环境里的事物时,我们都可以百分百的肯定对方知道我们说的是什么,这是因为人们在对这些名词所代表的的东西有着相同的认知。于是,当对别人说"汽车停在车库里"时,可以断定他们不会理解为"小鸟关在壁橱里"等别的含义。

    我们的"世界对象模型"不进可以用来描述客观存在的事物,还可以同来描述抽象概念。

    例如,假设有个人想我问路,而我给出的答案是"左边第三栋房子",这个答案有没有意义取决于那个人能够理解"左边"和"第三"的含义。如果他不会数数或者分不清左右,则不管他是否理解这几个概念,我的回答对他都不会有任何的帮助。在现实世界中,正是因为大家对抽象的"世界对象模型"有着基本的共识,人们才能用非常简单的话来表达出复杂的含义并得到对方的理解。

    2.知识剖析
    刚刚提到了节点。那么节点这个到底又是什么?

    节点这个词是一个网络用语,代表了网络中的一个连接点。一个网络就是由一些节点构成的集合。

    在现实世界中,一切事物都由原子构成。原子就是现实世界的节点。但是原子同样还可以进一步分解为更细小的亚原子微粒。这些亚原子微粒同样也是节点。

    DOM也是同样的情况。文档是由节点构成的集合,只不过此时的节点是文档树上的树枝和树叶而已。

    在DOM中有许多不同类型的节点。就像原子包含着亚原子微粒那样,也有很多类型的DOM节点包含着其他类型的节点。接下来我们先看看其中的三种:元素节点、文本节点和属性节点。

    那么,DOM是由什么组成?

    对于XML应用开发来说,DOM就是一个对象化的XML数据接口,一个与语言无关、与平台无关的标准接口规范。

    DOM定义了HTML文档和XML文档的逻辑结构,给出了一种访问和处理这两种文档的方法。文档代表的是数据,而DOM则代表了如何去处理这些数据。

    作为W3C的标准接口规范,目前,DOM由三部分组成,包括:核心(core)、HTML接口和XML接口。(至于XML和HTML区别是啥,你可以理解为两种不同的语言,但是很相似。作用不一样。XML更多用于数据传输设计,HTML更多用于数据的展示模块)

    核心部分是结构化文档比较底层对象的集合,这一部分所定义的对象已经完全可以表达出任何HTML和XML文档中的数据了。

    HTML接口和XML接口两部分则是专为操作具体HTML文档和XML文档所提供的高级接口。

    DOM树(丑图,摘自红宝书)

    2.知识剖析
    DOM的四个基本接口

    在DOM接口规范中,有四个基本的接口:Document, Node, NodeList, NamedNodeMap。

    Document:Document接口是对文档进行操作的入口,它是从Node接口继承过来的。

    Node:Node接口是其他大多数接口的父类。 在DOM树中,Node接口代表了树中的一个节点。

    常见的DOM操作

    1.查找节点

    document.getElementById('id属性值'); 返回拥有指定id的第一个对象的引用
    
    document/element.getElementsByClassName('class属性值'); 返回拥有指定class的对象集合
    
    document/element.getElementsByTagName('标签名'); 返回拥有指定标签名的对象集合
    
    document.getElementsByName('name属性值'); 返回拥有指定名称的对象结合
    
    document/element.querySelector('CSS选择器'); 仅返回第一个匹配的元素
    
    document/element.querySelectorAll('CSS选择器'); 返回所有匹配的元素
    
    document.documentElement; 获取页面中的HTML标签
    
    document.body; 获取页面中的BODY标签
    
    document.all['']; 获取页面中的所有元素节点的对象集合型
    

    2.创建节点

    document.createElement('元素名'); 创建新的元素节点
    
    document.createAttribute('属性名'); 创建新的属性节点
    
    document.createTextNode('文本内容'); 创建新的文本节点
    
    document.createComment('注释节点'); 创建新的注释节点
    
    document.createDocumentFragment( ); 创建文档片段节点
    

    3.删除节点

    parentNode.removeChild( existingChild );删除已有的子节点,返回值为删除节点
    
    element.removeAttribute('属性名');删除具有指定属性名称的属性,无返回值
    
    element.removeAttributeNode( attrNode );删除指定属性,返回值为删除的属性
    

    4.修改节点

    parentNode.replaceChild( newChild, existingChild );用新节点替换父节点中已有的子节点
    
    element.setAttributeNode( attributeName );若原元素已有该节点,此操作能达到修改该属性值的目的
    
    element.setAttribute( attributeName, attributeValue );若原元素已有该节点,此操作能达到修改该属性值的目的
    

    5.插入节点

    parent.appendChild( element/txt/comment/fragment );向父节点的最后一个子节点后追加新节点
    
    parent.insertBefore( newChild, existingChild );向父节点的某个特定子节点之前插入新节点
    
    element.setAttributeNode( attributeName );给元素增加属性节点
    
    element.setAttribute( attributeName, attributeValue );给元素增加指定属性,并设定属性值
    

    6.设置样式

    ele.style.styleName = styleValue;设置ele元素的CSS样式
    

    7.更多讨论

    (1)鼠标事件有哪些?

    1、onclick 事件——当用户点击时

    2、onload 事件——用户进入

    3、onunload 事件——用户离开,如刷新页面,提交表单,关闭窗口,关闭浏览器时触发(这个事件在Chrome和Opera浏览器里并不支持)

    4、onmouseover事件——鼠标移入

    5、onmouseout事件——鼠标移出

    6、onmousedown事件——鼠标按下

    7、onmouseup 事件——鼠标抬起

    (2)如何获取相邻的节点?

    neborNode.previousSibling :获取已知节点的相邻的上一个节点

    nerbourNode.nextSlbling: 获取已知节点的下一个节点

    (3)可以复制节点么?

    cloneNode(true | false);复制某个节点

    参数:是否复制原节点的所有属性

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 422,941
精华内容 169,176
关键字:

dom操作

友情链接: Rubeus-master.zip