位置: 编程技术 - 正文

JavaScript DOM 学习总结(五)(javascript的dom操作)

编辑:rootadmin

推荐整理分享JavaScript DOM 学习总结(五)(javascript的dom操作),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript的dom操作,javascript的dom操作,javascript的dom,javascript中dom的含义,javascriptdom编程,js中dom的用法,javascript中dom的含义,js dom操作方法,内容如对您有帮助,希望把文章链接给更多的朋友!

1、DOM简介。

  当页面加载时,浏览器会创建页面的文档对象模型(Document Object Model)。文档对象模型定义访问和处理HTML文档的标准方法。DOM 将HTML文档呈现为带有元素、属性和文本的树结构,即节点树。通过DOM,JS可创建动态的HTML,可以使网页显示动态效果并实现与用户的交互功能。JS能够改变页面中所有的HTML元素、属性和CSS样式,并对页面中所有事件做出响应。所以学习JS的起点就是处理网页,处理网页就需要使用DOM进行操作。

2、DOM获取元素。

  JS要想操作HTML元素,那么首先就必须先找到该元素。通常使用以下几种方法完成:

  通过元素设置的id找到HTML元素。

  通过标签名找到HTML元素。

  通过元素设置的名称(name)找到HTML元素。

  所谓的DOM,实际上就是document,获取元素就是操作document。

  (1)、通过id找到元素

  方法:document.getElementById('id');

  网页是由标签将信息组合起来的,id属性值是唯一的,就像身份证一样,通过一个身份证可以找到相对应的人,所以通过该方法,可以获取到与之相对应的标签,而获取的元素在JS中是一个对象,若想对元素进行操作,则需要通过他的属性或方法。

  (2)、通过标签名找到元素

  方法:document.getElementsByTagName('Tagname');

  通过该方法,返回的是带有指定标签名的对象的集合,也就是以数组的形式返回,返回的顺序是他们在文档中的顺序。

  (3)、通过name找到元素

  方法:document.getElementsByName('name');

  该方法与getElementById()方法有点相似,都是通过设置的属性值找到元素,只不过该方法是通过设置的name属性值查找元素。name属性在文档中可能不唯一,所以该方法返回的也是元素的数组,而不是一个元素。

  既然可以通过id找到元素,那么也就可以通过class找到元素。className属性用于设置或者返回元素的class类名。

  语法:object.className = 'className'

  该方法可以控制class类名,返回元素的class属性,作用是可以为网页中某个元素指定一个className来更改该元素的外观。

  实例:简单的网页换肤效果

  这只是一个简单的切换背景色效果,如果想切换网页的整体样式,可以使用外部CSS文件,通过JS改变link标签的href属性来完成。

  如果想设置多个class类名相同的元素的样式,就需要借助数组的方法来完成,其实现原理也很简单,首先通过id获取其父元素,再获取父元素下所有子元素的标签名,获取标签名返回的是元素的数组,所以就可以和访问数组一样的方法来访问元素的数组,那么先使用循环遍历该元素数组,再做判断,如果这个元素的className等于我们设置的class属性值,就说明这是我们要找的元素。

  实例:将有序列表中所有class属性值为"col"的元素背景颜色设置为绿色。

  下面是一个通过class属性值获取元素的封装函数,方便以后使用。

3、DOM操作。

  获取到HTML元素之后,就可以进行相应的操作。

  (1)、改变HTML

  修改HTML内容的最简单的方法时使用 innerHTML 属性。innerHTML顾名思义,inner就是内部的,既然是HTML,那么就可以给里边放HTML。该属性可用于获取和替换HTML元素的内容。

  语法:document.getElementById(id).innerHTML = new HTML

  (2)、操作元素属性

  修改元素属性最简单的方法就是直接修改,语法:document.getElementById(id).属性名 = new value 比如修改图片src属性的指向路径。

  此外还可以通过DOM方法获取、添加、删除元素的属性。

  ①、getAttribute()

  getAttribute()方法通过元素节点的属性名获取属性的值。

  语法:elementNode.getAttribute(name)  name是想要获取的元素节点的属性名

  ②、setAttribute()

  setAttribute()方法添加一个新属性并指定值,或者把一个现有的属性设定为指定的值。

  语法:elementNode.setAttribute(name,value)  name是属性名,value是属性值。

  ③、removeAttribute()

  removeAttribute()方法可删除元素的属性。

  语法:elementNode.removeAttribute(name)  name是属性名。

  (3)、改变CSS

  改变HTML元素的CSS样式可直接使用该语法:document.getElementById(id).style.样式名 = new style

  上面的代码,通过style设置的样式,都是行间样式,可以使用火狐的Firebug点击相应的按钮,就能看到所有设置的CSS样式都出现在了行间。

  可以直接通过style获取和设置CSS样式,那么有没有更简洁的方法呢?可以借助于函数使用JS的内置对象arguments完成,所谓arguments,就是可变参,不定参,参数的个数可变,是一个参数数组,无需指出参数名,就可访问他们,但是为了增强可读性,给参数取名,还是很有必要的。

  下面是一个获取和设置行间样式的封装函数,以便以后使用。

  我们都知道,在实际的WEB项目开发中,要遵循结果、表现、行为相分离的原则,以增强可读性,优化代码,便于后期维护。所以通常我们设置元素的样式,并非都是在行间设置。使用style方法获取的只是DOM元素style属性里的样式规则,对于通过class属性设置的外部样式表,style就显得力不从心了。那要如何获取元素的非行间样式呢?DOM标准中有个全局方法getComputedStyle,通过该方法可以获取当前对象的样式信息。比如:getComputedStyle(obj, false).paddingLeft,可以获取到对象的左内边距。这里需要注意:在获取元素的复合样式时,一定要使用精确的值,复合样式比如background、border,如果要获取元素的背景颜色,只使用background会出错,一定要写成backgroundColor。

  JS只能修改元素的行间样式,并不能修改获取到的非行间样式。那么很多人可能会产生疑问,既然可以获取到又不能修改,那还获取有什么用。其实获取非行间样式是非常有必要的,如果是外部样式表,样式都是密密麻麻一片英文的存在,不可能一个个去找,到底该元素设置的什么样子,再回头修改,那岂不是太浪费精力了,所以该方法就显得尤为重要,而且返回的值都是精确值,通过获取的非行间样式信息,也有利于更精细的修改元素的当前样式,这是多么美妙的一件事,直接使用style设置元素的行间样式,因为行间样式的优先级最高,所以就覆盖掉了非行间样式,其实也就相当于跟修改了非行间样式一样,只是显示在了行间,我们目的反着是已经达到了。

  (4)、对事件做出响应

  实例:全选和反选,输入对应的序号选中

3、DOM节点。

  HTML文档可以说是由节点构成的集合,常见的DOM节点有三种,即元素节点、属性节点和文本节点。元素节点就是HTML标签,标签的属性就是属性节点,文本节点就是页面可以浏览的内容。

JavaScript DOM 学习总结(五)(javascript的dom操作)

  在文档对象模型中,每一个节点都是一个对象,DOM节点有三个重要的属性:节点的名称,节点的值和节点的类型。

  (1)、nodeName:节点的名称

  nodeName属性返回节点的名称。元素节点的名称与标签名相同(大写),属性节点的名称是属性的名称,文本节点的名称永远都是#text,文档节点的名称永远都是#document。

  (2)、nodeValue:节点的值

  nodeValue属性返回节点的值。元素节点的值是undegined或null,属性节点的值是属性的值,文本节点的值是文本自身。

  (3)、nodeType:节点的类型

  nodeType属性返回节点的类型。以下是常见的节点类型:

  JS中函数可以嵌套使用,有父函数有子函数,HTML标签也可以嵌套使用,那么就说明存在着各种不同的节点关系,比如父节点、子节点和兄弟节点。为了方便操作,DOM定义了一些节点的公共属性。

  (1)、子节点

  childNodes属性返回节点的子节点集合,可使用length属性返回子节点的数量,然后就可以和数组一样获取需要的信息。

  通过上面的代码,可以看到返回的是。ul下明明只有5个li元素,怎么会返回呢?其实是这么回事:

  因为通过childNodes属性返回的子节点集合,不仅包括元素节点,而且还包括文本节点,浏览会将标签之间的空白默认为文本节点,在空白处输入文字,会在浏览器显示。所以建议使用children属性,该属性只返回元素节点,不包括文本节点,并且不包括注释节点。

  上面的代码,ul下5个li元素,返回子节点个数为5。children属性要比childNodes属性好用太多了,只返回元素的子节点,还不包括孙子辈节点。

  (2)、首尾子节点

  firstElementChild属性返回children数组的第一个节点。

  语法:node.firstElementChild  该方法相当于:element.children[0]

  lastElementChild属性返回children数组的最后一个节点。

  语法:node.lastElementChild  该方法相对于:element.children[element.children.length-1]

  (3)、父节点

  parentNode属性用于获取指定节点的父节点。注意:父节点只能有一个。通过使用两个获取父节点,可获取祖节点。

  实例:点击子节点,隐藏父节点

  offsetParent属性可返回一个元素用于定位的父级。

  (3)、兄弟节点

  nextElementSibling属性返回同一树层级中某个节点之后紧跟的节点。

  语法:element.nextElementSibling  

  previousElementSibling属性返回同一树层级中某个节点之前紧跟的节点。

  语法:element.previousElementSibling

节点类型 说明 值 元素节点 每一个HTML标签都是一个元素节点,如 <div> 、 <p>、<ul>等 1 属性节点 元素节点(HTML标签)的属性,如 id 、class 、name 等。 2 文本节点 元素节点或属性节点中的文本内容。 3 注释节点 表示文档注释,形式为<!-- text content -->。 8 文档节点 表示整个文档(DOM 树的根节点,即 document )。 9

  实例:获取li元素节点的兄弟节点

<body>

4、DOM应用。

  DOM最实际的应用就是可以通过JS创建、插入和删除节点。

  (1)、创建节点

  createElement()方法可创建元素节点。

  语法:document.createElement(tagName)

  appendChild()方法可在指定节点的末尾插入一个新的子节点,每次都向末尾添加。

  语法:父级.appendChild(new node)

  实例:创建并添加li元素

  (2)、插入节点

  insertBefore()方法可在已有的子节点前插入一个新的子节点。

  语法:父级.insertBefore(new node, node)  第一个参数为要插入的新子节点。第二个参数是原有节点,也就是在谁之前插入。

  实例:创建并添加li元素,每个新创建的li元素都插入到之前插入的li元素之前

  (4)、删除节点

  removeChild()方法用于删除一个节点

  语法:父级.removeChild(node)  参数为要删除的子节点。

  实例:简单的表格添加和删除

  这个实例只能很简单的完成添加和删除,并不对输入进行判断,如果想要做的完美,还需要做很多工作,可以对表格进行美化,设置背景色,鼠标移入高亮显示,鼠标移出恢复背景色,最关键的就是要对表单输入内容进行判断,以确保每次提交的信息都是有效信息,如果表格信息量大,还可以添加支持模糊搜素,多关键字搜索,以提高用户体验度,当然在实际的项目中,这样的情况几乎不会出现,但可以作为自己的实践,检验学习成果。

  (5)、替换节点和创建文本节点

  replaceChild()方法可用于替换元素节点。

  语法:node.replaceChild (new node, node)  第一个参数为用于替换的节点。第二个参数为原有节点。

  createTextNode()方法可创建新的文本节点,返回新创建的Text节点。

  语法:document.createTextNode(txt)

  这两种方法平时几乎用不到,但还是需要了解。

  实例:点击按钮将span标签替换为b标签。再创建一个文本节点插入到创建的p元素下,并设置className。

以上所述是积木网小编给大家分享的关于JavaScript DOM 学习总结(五)的全部叙述,希望大家喜欢。

Bootstrap每天必学之按钮(一) 本文主要讲解的是按钮的样式。1.选项2.尺寸3.活动状态4.禁用状态5.可做按钮使用的Html标签选项使用上面列出的class可以快速创建一个带有样式的按钮。b

JS截取字符串实例详解 本文实例讲述了JS截取字符串的方法。分享给大家供大家参考,具体如下:js截取字符串可使用substring()或者slice()函数:split()功能:使用一个指定的分隔

JS实现图片高亮展示效果实例 本文实例讲述了JS实现图片高亮展示效果的方法。分享给大家供大家参考,具体如下:昨天朋友让我帮着做个图片高亮展示的效果,虽然不难,不过满有

标签: javascript的dom操作

本文链接地址:https://www.jiuchutong.com/biancheng/385488.html 转载请保留说明!

上一篇:全面解析Bootstrap表单使用方法(表单按钮)(全面解析李可破格救心汤)

下一篇:Bootstrap每天必学之按钮(一)(bootstrap基础教程)

  • 坏账准备要写到明细账里面吗
  • 奖励旅游的概念解释
  • 个税返还需要缴纳所得税吗
  • 标准成本法核算方法
  • 增票普票税额是否可以抵扣吗
  • 自然人管理系统银行信息
  • 加盖发票专用章的是
  • 一般纳税人进项税额怎么算
  • 工资扣款做什么科目
  • 物业公司前期工作计划
  • 印花税计入应交税费需要调整吗
  • 会务费能开发票吗
  • 航天信息300元是什么费用
  • 蔬菜销售收入免增值税吗
  • 劳务分包简易计税可以抵扣吗
  • 员工出差补贴怎么入账
  • 分步法所分的成本计算步骤应是实际的生产步骤
  • 制造业增值税加计抵减
  • 企业押金怎么管理
  • WIN10专业版永久激活
  • 1000元的打印机双十一满减可以减150吗少
  • linux怎么增加磁盘空间
  • PHP:mb_strtoupper()的用法_mbstring函数
  • 个人多交社保划不划算
  • 电梯安装包工头赚多少
  • 销售折扣的会计分录处理
  • 现金流量科目怎么设置
  • 药品生产企业应建立
  • 资产现金流量收益率计算方法
  • OSError: [WinError 1455] 页面文件太小,无法完成操作。 Error loading “C:\ProgramData\Anaconda3\lib\site-packages\to
  • 若依框架权限控制
  • 债权投资利息调整属于什么科目?
  • 明细分类账户定义
  • 旋转 目标检测
  • 为什么我的命令提示符里显示user
  • metareg命令
  • 存货降价销售的会计分录
  • 哪些固定资产不能计提折旧
  • 离职员工的个税忘记申报了补申报会被处罚吗
  • 应付账款增值税怎么算
  • 履约保证金能否委托支付
  • 季节性临时工什么意思
  • 投资管理公司成立的请示范文
  • 其他收益属于什么类科目
  • 所得税季报季末从业人数
  • 顺流交易为什么也要减
  • 公司从异地迁移到本地怎么向当地政府写申请
  • 企业取得交易性金融资产的主要目的是
  • 净现金流量算残值么
  • 余利宝收益如何算
  • 高新企业研发费用占比
  • 存货周转率多少属正常范围
  • 应收账款余额等于什么?
  • xampp修改mysql默认密码的方法
  • linux系统关机重启命令
  • win8经常弹出转到电脑设置
  • window7 aero
  • mom.exe是什么
  • win8.1系统HDMI高清线连接电视后没有声音的原因及解决办法
  • linux删除u盘记录
  • 电脑及网络维护
  • macbook 苹果系统
  • win7旗舰版升级win10教程
  • Win10 Mobile Build 14269版截图曝光:脱胎换骨 速度飙升
  • 实例讲解命局与大运流年作用
  • jquery插件使用教程
  • 批处理修改文件名称
  • react区别
  • js中函数定义有哪几种方式
  • js css函数
  • jquery课程总结
  • sql服务3417
  • lint 工具
  • jQuery基于muipicker实现仿ios时间选择
  • jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
  • 纪检委是干什么工作的能管理税务管理局吗
  • 保险理赔款如何分配
  • 普通发票开具系统
  • 国地税合并6月15日挂牌
  • 2021年福利彩票47期
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设