我的编程空间,编程开发者的网络收藏夹
学习永远不晚

web前端:DOM学习笔记

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

web前端:DOM学习笔记

  根据W3CDOM规范,DOM是html与XML的应用编程接口(API),DOM将整个页面映射为一个由层次节点组成的文件。有1级、2级、3级共3个级别。

  DOM简介:

  1、DOM:DocumentObjectModel(简称文档对象模型),是专门用于操作网页内容API一套标准!网页内容:字符、图片等各种资源

  2、核心DOM:操作一切结构化文档的API标准!特点:强大,万能;缺点:操作繁琐。

  3、HTMLDOM:专门操作HTML网页的API标准--针对核心DOM中部分API进行了简化!优点:操作相对简化;缺点:非万能。

  4、对比:实际开发中HTMLDOM使用频率相对较高,只有当HTMLDOM无法实现某些功能时才会使用核心DOM。

  5、DOM树:网页中一切内容都在内存中以树状结构存储,每项内容都在这个树上有一个节点。每个DOM树都有一个根节点:document节点。

  6、节点对象:DOM上每一个节点,都是一个节点对象,提供了操作节点的API。

  节点对象的属性:

  1、nodeType:保存着节点的类型名!--不能明确获知节点名称

  2、nodeName:保存节点的名称!--区分不同元素

  3、nodeValue:保存元素的值!

  正式操作DOM:增删改查!操作流程:获取能够操作的元素--目标元素--绑定事件--获取需要操作的元素--事件具体操作

  查找/获取:

  html中不需要获取直接使问的元素:

  document.documentElement==>html

  document.head==>head

  document.body==>body

  1、按照节点之间的层级关系:如果已经获取到一个元素,想找其周围元素

  1>父子级:

  child.parentNode:获取父节点--返回父节点

  parent.childNodes:获取字节的--可以返回多个

  parent.firstchild:获取父节点中第一个字节点

  parent.lastchild:获取父节点中最后一个字节点

  2>兄弟级:

  elem.nextsibling:获取下一个兄弟节点

  elem.previoussibling:获取上一个兄弟节点

  问题:容易受到空字符影响!

  2、解决方案:元素树:只包含元素的树状结构。元素树并非新的一个树,只是DOM树结构的一部分

  1>父子级:

  child.parentElement:获取父节元素--返回父级元素

  parent.chidren:获取子元素--可以返回多个

  parent.firstElementchild:获取父元素中第一个子元素

  parent.lastElementchild:获取父元素中最后一个子元素

  2>兄弟级:

  elem.nextElementSibling:获取下一个兄弟元素

  elem.previousElementSibling:获取上一个兄弟元素

  遍历节点数/元素树

  方式1:递归

  步骤:定义一个方法,查找一个父节点下面所有的子节点--对遍历到的每个字节,再执行与父节点相同的方法。

  步骤:定义一个方法,传入一个节点对象,获取并遍历每一个子节点

  functioniterator(elem){

  varchildren=elem.childNodes;

  for(vari=0;i<children.length;i++co){

  console.log("当前节点类型是:"+elem[i].nodeType);

  console.log("当前节点名称是:"+elem[i].nodeName);

  }

  }

  注意:递归的使用效率很低,不介意使用!

  方式2:使用节点迭代对象

  步骤1、创建一个节点迭代对象:variteartor=document.createNodeIterator(parent,NodeFilter.SHOW_ALL,null,false);

  步骤2、反复调用iterator的nextNode()

  作用:返回当前遍历到的节点;自动跑到下一个节点;自动返回null退出。

  类数组对象:长得像数组,但不是数组

  动态集合:不实际存储值,每次访问都会重新去查找DOM树!

  问题:每次循环判断时都会去查找DOM树,浪费性能

  处理:在判断之前,事先保存值。

  操作DOM的步骤:

  1、获取目标元素

  2、绑定事件:再获取的元素对象上使用

  elem.on事件名=function(){

  3、获取需要操作的元素

  4、操作元素

  }

  查找元素的内容

  1、按照父子级和兄弟关系查找节点/元素

  2、按照HTML特性查找

  1>根据元素的IDS属性查找:varelem=document.getElementById("ID值");

  注意:只能通过document调用;只能返回一个元素!

  2>根据元素的标记名查找:varelems=parent.getElementByTagName("标记名");

  注意:返回一个类数组的动态集合;可以通过任意父节元素调用;查找不限层级!

  3>根据元素的name属性查找:varelems=document.getElementsByName("name属性值");

  注意:返回一个类数组的动态集合;只能用document调用!

  4>根据元素的class属性查找:varelems=parent.getElementsByClassName("class值");

  注意:返回一个类数组的动态集合;可以通过任意父级元素调用;查找不限层级;只要元素包含指定的class取值即可!

  3、根据css选择器查找元素--重要

  1>查找一个元素:varelem=parent.querySelector("选择器");

  2>查找多个元素:varelems=parent.querySelectorAll("选择器");

  注意:

  1、以上两个API返回的不是动态集合,即使反复访问也不会反复查找DOM。

  2、在低版本的浏览器中,不支持此类API。

  总结:

  1、已经获取了一个元素,想查找附近的元素--通过元素之间的关系查找

  2、如果只知道一个条件,想获取元素--通过html特性查找

  3、如果条件比较复杂--通过选择器查找

  修改元素的内容

  1、.innerHTML:获取/修改元素中内容区域的内容

  内容区域:从起始标记到结束标记之间的区域

  取值:elem.innerHTML//获取元素elem的内容区域的内容

  赋值:elem.innerHTML="新值";

  注意:此API赋值的内容,浏览器会当作html代码解析!

  2、.textContent:获取/修改元素elem的内容标记内的文本

  取值:elem.textContent

  赋值:elem.textContent="新值";

  注意:此API赋值的内容,浏览器不会解析特殊字符,就是普通文本

  3、.value:获取表单元素的value属性值

  获取:varstyle1=elem.style.属性名;

  修改:elem.style.属性名=值;

  套路:可以将需要的样式设置在一个类中,通过修改class属性引入这个类。

  elem.className="类名";

  DOM操作属性

  1、标准属性:所有元素都支持的属性(id,name,class,title,style......),HTML标准中指定的属性----w3c

  2、核心DOM中的API:

  1>获取一个元素指定的属性:elem.getAttribute("属性名");

  2>修改一个元素指定属性的值:elem.setAttribute("属性名","新值");

  3>判断一个元素是否具有指定属性:elem.hasAttribute("属性名");

  4>移除一个元素指定的属性:elem.removeAttribute("属性名");

  注意:不仅将属性值删除,属性名也会删除。

  HTMLDOM操作属性

  在HTMLDOM中,已经将元素支持的标准属性封装在家元素对象中,可以通过.之间访问!

  1、获取属性:elem.属性名;

  2、修改/添加:elem.属性名="值";

  3、判断:elem.属性名!=="";

  4、删除:elem.属性名="";

  操作页面的元素

  添加一个元素:

  1>创建一个元素:varelem=document.createElement("新元素");

  2>添加必要的属性和内容:elem.属性名1=值;elem.属性名2=值;elem.innerHTML="百度一下";

  3>将创建的新元素追加到DOM树中指定的父节点下!

  1、在父元素的末尾追加新元素:parent.appendChild(elem);

  2、中间插入:将新元素插入到兄弟元素之间:parent.insertBefore(elem,兄弟元素);

  3、替换:parent.replace(elem,被替换的元素);

  DOM操作元素

  如果进行了DOM操作元素,网页将重新layout。如果频繁的操作DOM,会造成性能浪费。

  解决方法:如果需要向父节点中追加多个字节点,可以先将需要添加的子元素先保存在一个虚拟的临时父节点下。最后一次性将所有字节点追加到DOM中真实父节点下!

  步骤1:创建多个子节点:varzhy1=document.createElement("a");varzhy2=document.createElement("b");

  步骤2:创建虚拟父节点:varfrag=document.createElementFragment();

  步骤3:将子节点追加到虚拟父节点:frag.appendChild(zhy1);frag.appendChild(zhy2);

  步骤4:最后将虚拟父节点追加到真正的父节点中:parent.appendChild(frag);

  注意:将临时节点追加到DOM中,临时的片段frag会被释放,真正追加到DOM的只有那些子元素!

  HTMLDOM简化操作

  在操作常见的HTML元素时,HTMLDOM提供了一些简化操作。包括了img,select,option,table/行分组/tr/td,from

  1、img:varimg=newImage();

  2、select:value;selectdIndex;option;length

  解析:value:获取被选中的选项的value值;selectedIndex:获取当前被选中的选择的下标;option:获取内部所有的option元素集合;length:获取option所得集合的长度。

  3、option:varopt=newOption();

  4、table:外层的table管着行分组(thead,tbody,tfoot);

  5、创建行分组:已经获取到table元素,可以直接调用table创建行分组元素

  varthead=table.createTHead();

  vartbody=table.createTBody();

  vartfoot=table.createTFoot();

  6、删除行分组:调用table删除内部的行分组,注意只能删表头和表尾。

  table.deleteTHead();

  table.deleteTFoot();

  7、获取表格中的行分组:可以有多个表主体。

  table.tHead;

  table.tBodies;

  table.tFoot;

  8、行分组控制行

  创建行:行分组insertRow(i);

  删除行:行分组.deleteRow(i);

  获取行:行分组.Rows;

  9、行分组控制列

  创建列:tr.insertCell(i);

  删除列:tr.deleteCell(i);

  获取列们:tr.Cells;

  10、from:获取页面上的from元素:

  document.from;获取页面元素中的表单元素

  document.forms[i/id];根据表单的序号,或者id值获取对应表单!

  from.elements;获取表单中所有的表单元素!

  返回一个类数组对象,具有length和下标!

  DOM实际上是以面向对象方式描述的文档模型。DOM定义了表示和修改文档所需的对象、这些对象的行为和属性以及这些对象之间的关系。可以把DOM认为是页面上数据和结构的一个树形表示,不过页面当然可能并不是以这种树的方式具体实现。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

web前端:DOM学习笔记

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

web前端:DOM学习笔记

编程学习网:根据W3CDOM规范,DOM是html与XML的应用编程接口(API),DOM将整个页面映射为一个由层次节点组成的文件。有1级、2级、3级共3个级别。
web前端:DOM学习笔记
DOMIDSXML2024-04-23

web前端:CSS学习笔记-过渡模块

编程学习网:CSS为HTML标记语言提供了一种样式描述,定义了其中元素的显示方式。CSS在Web设计领域是一个突破。利用它可以实现修改一个小的样式更新与之相关的所有页面元素。
web前端:CSS学习笔记-过渡模块

web前端:遍历DOM树

编程学习网:在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象的标准模型就称为DOM。DocumentObjectModel的历史可以追溯至1990年代后期微软与Netscape的浏览器大战,双方为了在Javascript与JScript一决生死,于是大规模的赋予浏览器强大的功能。
web前端:遍历DOM树

web前端:HTML学习 day04

编程学习网:在WWW上的一个超媒体文档称之为一个页面(page)。作为一个组织或个人在万维网上开始点的页面称为主页Homepage,或首页,主页中通常包括有指向其他相关页面或其他节点的指针(超级链接)。在逻辑上将视为一个整体的一系列页面的有机集合称为网站(Website或web)。
web前端:HTML学习 day04

web前端:DOM解读

编程学习网:DocumentObjectModel的历史可以追溯至1990年代后期微软与Netscape的浏览器大战,双方为了在Javascript与JScript一决生死,于是大规模的赋予浏览器强大的功能。微软在网页技术上加入了不少专属事物,既有VBScript、ActiveX、以及微软自家的Dhtml格式等,使不少网页使用非微软平台及浏览器无法正常显示。DOM即是当时蕴酿出来的杰作。
web前端:DOM解读
windowDOM开发2024-04-23

web前端:js数组去重(最优方法)笔记

编程学习网:在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。
web前端:js数组去重(最优方法)笔记
C语言js数组2024-04-23

web前端:为什么学习javascript

编程学习网:Javascript最初受java启发而开始设计的,目的之一就是“看上去像Java”,因此语法上有类似之处,一些名称和命名规范也借自Java。
web前端:为什么学习javascript

web前端:JS---DOM---part3课程介绍和part2复习

编程学习网:DocumentObjectModel的历史可以追溯至1990年代后期微软与Netscape的浏览器大战,双方为了在Javascript与JScript一决生死,于是大规模的赋予浏览器强大的功能。微软在网页技术上加入了不少专属事物,既有VBScript、ActiveX、以及微软自家的Dhtml格式等,使不少网页使用非微软平台及浏览器无法正常显示。DOM即是当时蕴酿出来的杰作。
web前端:JS---DOM---part3课程介绍和part2复习
程序员DOMJS2024-04-23

web前端:ES6 - 基础学习(18): Reflect

编程学习网:API就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的API而使操作系统去执行应用程序的命令。
web前端:ES6 - 基础学习(18): Reflect

web前端:新手小白学习web前端必看基础攻略

编程学习网:Internet采用超文本和超媒体的信息组织方式,将信息的链接扩展到整个Internet上。web就是一种超文本信息系统,Web的一个主要的概念就是超文本连接,它使得文本不再象一本书一样是固定的线性的。而是可以从一个位置跳到另外的位置。
web前端:新手小白学习web前端必看基础攻略
htmlCSSjava2024-04-23

web前端:JS---体验DOM操作

编程学习网:文档对象模型(DocumentObjectModel,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口。在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象的标准模型就称为DOM。
web前端:JS---体验DOM操作

web前端:ES6 - 基础学习(9): Class 类

编程学习网:CLASS是一种在网络工程中的一种协议。一般组词为CLASSLESS(无类)或者CLASSFUL(有类)。面向对象编程中一个无明显特点的范畴,用于描述一组更具体的称为对象的东西。另有日本乐队组合名称也为CLASS。同时,class也是{{C++语言}}中的关键字,在matlab中class用于获取变量的类型。
web前端:ES6 - 基础学习(9): Class 类

web前端:ES6 - 基础学习(6): 对象扩展

编程学习网:对象,是编程术语,其广义指的是在内存上一段有意义的区域,称作为一个对象。在C中,具有特定长度的类型,可以称作为对象类型,函数不具有特定长度,所以不是对象类型。
web前端:ES6 - 基础学习(6): 对象扩展

web前端:如何正确学习web前端流程以及如何找工作

编程学习网:HTML、CSS、Javascript这三个是前端开发中最基本也是最必须的三个技能。前端的开发中,在页面的布局时,HTML将元素进行定义,CSS对展示的元素进行定位,再通过JavaScript实现相应的效果和交互。
web前端:如何正确学习web前端流程以及如何找工作

web前端:ES6 - 基础学习(21): Generator 函数

编程学习网:编程是编写程序的中文简称,就是让计算机代为解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。
web前端:ES6 - 基础学习(21): Generator 函数

web前端:JS---DOM---总结获取元素的方式

编程学习网:DOM实际上是以面向对象方式描述的文档模型。DOM定义了表示和修改文档所需的对象、这些对象的行为和属性以及这些对象之间的关系。可以把DOM认为是页面上数据和结构的一个树形表示,不过页面当然可能并不是以这种树的方式具体实现。
web前端:JS---DOM---总结获取元素的方式
XMLDOMJS2024-04-23

web前端:现在Web前端的发展趋势和行业前景,还能转行学习前端开发吗?

编程学习网:前端技术的发展是互联网自身发展变化的一个缩影。前端技术指通过浏览器到用户端计算机的统称,存贮于服务器端的统称为后端技术。前端开发主要职能就是把网站的界面更好地呈现给用户。
web前端:现在Web前端的发展趋势和行业前景,还能转行学习前端开发吗?

web前端:JS---DOM---案例:模拟百度搜索框

编程学习网:百度(Nasdaq:BIDU)是全球最大的中文搜索引擎,2000年1月由李彦宏、徐勇两人创立于北京中关村,百度致力于向人们提供“简单,可依赖”的信息获取方式。
web前端:JS---DOM---案例:模拟百度搜索框
搜索JS前端2024-04-23

web前端:JS---DOM---自定义属性引入和移除

编程学习网:DOM实际上是以面向对象方式描述的文档模型。DOM定义了表示和修改文档所需的对象、这些对象的行为和属性以及这些对象之间的关系。可以把DOM认为是页面上数据和结构的一个树形表示,不过页面当然可能并不是以这种树的方式具体实现。
web前端:JS---DOM---自定义属性引入和移除

web前端:ES6 - 基础学习(15): 函数的扩展 补充

编程学习网:ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是EuropeanComputerManufacturersAssociation)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为Javascript或JScript,所以它可以理解为是javascript的一个标准,但实际上后两者是ECMA-262标准的实现和扩展。
web前端:ES6 - 基础学习(15): 函数的扩展 补充

编程热搜

  • HTML常用标签超详细整理
    目录HTML概述1.1 什么是HTML1.2 HTML概念HTML常用基础标签标签的分类:常用基本标签HTML概述1.1 什么是HTMLHTML是做网站的、Web开发、互联网生态开发(PC端+移动端+微应用) 目前我们使用的都是HTML5,支持传统的PC端开发,还支持移动端开发还支持微应用开发,从而替换了部分传统的移动
    HTML常用标签超详细整理
  • 一文看懂服务器操作
    web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的。
    一文看懂服务器操作
  • web前端:如何正确学习web前端流程以及如何找工作
    编程学习网:HTML、CSS、Javascript这三个是前端开发中最基本也是最必须的三个技能。前端的开发中,在页面的布局时,HTML将元素进行定义,CSS对展示的元素进行定位,再通过JavaScript实现相应的效果和交互。
    web前端:如何正确学习web前端流程以及如何找工作
  • 完美实现浮动元素横排居中显示
    经常会遇到这样的页面布局:在一排显示几个不同的区域内容,但它们相对于页面是居中对齐的。注意这些区域内容不只是文字,也许还有图片或者其它元素混合而成。一般这样的布局我们很容易想到要用浮动float,但是怎么样居中对齐而又兼容低端浏览器哪?请接着往下看。首先看html
    完美实现浮动元素横排居中显示
  • 共同探讨CSS+DIV布局对建站的影响
    编程学习网:DIV是层叠样式表中的定位技术,全称DIVision,即为划分。有时可以称其为图层。DIV元素是用来为HTML文档内大块的内容提供结构和背景的元素。现在就跟着小编共同来学习一下:共同探讨CSS+DIV布局对建站的影响。
    共同探讨CSS+DIV布局对建站的影响
  • 详解CSS伪元素的妙用单标签之美
    目录:before和::before的区别哪些标签不支持伪元素?利用 after 清除浮动伪元素与css sprites 雪碧图单个颜色实现按钮 hover 、a
    详解CSS伪元素的妙用单标签之美
  • web前端:实现单选框点击label标记中的文字也能选中
    编程学习网:label元素不会向用户呈现任何特殊效果。不过,它为鼠标用户改进了可用性。如果您在label元素内点击文本,就会触发此控件。就是说,当用户选择该标签时,浏览器就会自动将焦点转到和标签相关的表单控件上。
    web前端:实现单选框点击label标记中的文字也能选中
  • 为你介绍CSS浮动清除最好的方法
    编程学习网:所谓网站(Website),就是指在网际网路(因特网)上,根据一定的规则,使用HTML等工具制作的用於展示特定内容的相关网页的集合。现在就跟着小编共同来学习一下:为你介绍CSS浮动清除最好的方法。
    为你介绍CSS浮动清除最好的方法
  • 如何提升网页的加载速度?
    编程学习网:相信在使用浏览器去浏览网页的时候,有些时候总会是出现网页加载慢的情况,除了网速的问题的话,更多的时候还是需要进行相关的设置来去提升网页的加载速度,会发现快的速度将会是让人感觉到非常的爽,下面我们来分享一下该如何才能进行优化,最终提升效率。方法是有很多种,在这里就不逐个的来列举出来了,有需要的朋友们可以参考一下。
    如何提升网页的加载速度?
  • web前端:js垃圾回收及内存泄漏
    编程学习网:Javascript也可以用于其他场合,如服务器端编程。完整的JavaScript实现包含三个部分:ECMAScript,文档对象模型,浏览器对象模型。
    web前端:js垃圾回收及内存泄漏

目录