什么是HTML DOM

文档对象模型(Document Object Model),是W3C组织推荐的处理可扩展置标语言的标准编程接口。简单理解就是HTML DOM 是关于如何获取、修改、添加或删除 HTML 元素的标准。我们用JavaScript对网页进行的所有操作都是通过DOM进行的。
这篇文章不做深入研究,只把各种用法和坑做一个总结。
JS获取DOM元素的方法(8种)
我们开始逐一讲解。
1.通过ID获取(getElementById)
document.getElementById('id')
用法:
1.上下文必须是document。
2.必须传参数,参数是string类型,是获取元素的id。
3.返回值只获取到一个元素,没有找到返回null。
坑~~坑坑~坑坑~坑坑~:
1.如果有多个id存在只获取第一个,也就是最先出现的哪一个。一般情况也不会出现同一个ID在页面上出现两次。
2.在IE6、7中会把表单元素的name当做ID值获取到。所以大家在定义这些的时候一定要注意。
3.在IE6、7中不区分大小写。
4.可以直接用元素的ID代表这个元素。(项目中不推荐)
5.通过ID获取元素的上下文只能是document。为什么上下文必须是document呢,因为getElementById这个方法在Document类的原型上,也许你没有听懂,那就继续往下看。
2.通过name属性(getElementsByName)
document.getElementsByName('name')
用法:
1.上下文必须是document。
2.必须传参数,参数是是获取元素的name属性。
3.返回值是一个类数组,没有找到返回空数组。
坑~~坑坑~坑坑~坑坑~:
1.获取的结果是一个类数组,不是数组。
2.在IE浏览器中只能获取到表单元素,当然我们一般也只用它获取表单元素,从ie10开始可以不只是表单元素。
3.上下文只能是document,原因同getElementById。
3.通过标签名(getElementsByTagName)
document.getElementsByTagName('p');
var oDiv = document.getElementById('divId');
oDiv.getElementsByTagName('p');
用法:
1.上下文可以是document,也可以是一个元素,注意这个元素一定要存在。
2.参数是是获取元素的标签名属性,不区分大小写。
3.返回值是一个类数组,没有找到返回空数组。
坑~~坑坑~坑坑~坑坑~:
1.获取的结果是一个类数组。
2.上下文不必须是document了,因为getElementsByTagName方法在不仅在Document类的原型上也在Element类的原型上,所以document和元素都可以使用这个方法。如果还不懂我在文章最后会再解释一下。
4.通过类名(getElementsByClassName)
用法(和getElementsByTagName类似):
1.上下文可以是document,也可以是一个元素。
2.参数是元素的类名。
3.返回值是一个类数组,没有找到返回空数组。
坑~~坑坑~坑坑~坑坑~:
1.获取的结果是一个类数组。
2.IE8以及以前版本不兼容。真可惜这么好用的方法不兼容。
5.获取html的方法(document.documentElement)
document.documentElement是专门获取html这个标签的。
6.获取body的方法(document.body)
document.body是专门获取body这个标签的。
7.通过选择器获取一个元素(querySelector)
用法:
1.上下文可以是document,也可以是一个元素。
2.参数是选择器,如:"div .className"。
3.返回值只获取到一个元素。
坑~~坑坑~坑坑~坑坑~:
这个方法不兼容IE7以及以前版本,现在似乎也没有考虑IE7兼容的公司了。
8.通过选择器获取一组元素(querySelectorAll)
用法同querySelector类似:
1.上下文可以是document,也可以是一个元素。
2.参数是选择器,如:"div .className"。
3.返回值是一个类数组。
坑~~坑坑~坑坑~坑坑~:
同querySelector,不兼容IE7。
使用原生JS获取DOM元素的8个方法讲完了,接下来在讲一下为什么有的方法只能在document上使用。
拿div举栗子,div是HTMLDivElement类的一个实例,document是HTMLDocument 的实例。
他们的继承关系:
HTMLDivElement > HTMLElement > Element > Node > EventTarget
HTMLDocument > Document > Node > EventTarget
我们都知道子类继承父类,子类就可以使用父类的属性和方法。
他们相同的继承关系是Node和EventTarget,也就是说他们都可以使用Node和EventTarget上的方法。
如Node上的nodeName、parentNode等,和EventTarget上的addEventListener等。
getElementById只在Document类的原型上,HTMLDivElement 没有继承Document类,所以div不能使用getElementById方法。
getElementsByTagName即在Document类的原型上也在Element类的原型上,所以div和document都可以使用getElementsByTagName方法。
其它同理。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js获取元素方法
# js获取元素的方法
# js中获取元素的方法
# 是一个
# 坑坑
# 返回值
# 选择器
# 没有找到
# 表单
# 不兼容
# 子类
# 也在
# 可以使用
# 中不
# 都是
# 他们的
# 我在
# 第一个
# 那就
# 多个
# 不懂
# 两次
# 是专门
相关文章:
如何通过商城自助建站源码实现零基础高效建站?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
如何快速搭建FTP站点实现文件共享?
个人网站制作流程图片大全,个人网站如何注销?
婚礼视频制作网站,学习*后期制作的网站有哪些?
宝塔建站助手安装配置与建站模板使用全流程解析
如何在阿里云高效完成企业建站全流程?
如何有效防御Web建站篡改攻击?
如何快速搭建支持数据库操作的智能建站平台?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
如何快速完成中国万网建站详细流程?
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
宁波自助建站系统如何快速打造专业企业网站?
如何在阿里云虚拟服务器快速搭建网站?
如何在宝塔面板中修改默认建站目录?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
网站图片在线制作软件,怎么在图片上做链接?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
微信推文制作网站有哪些,怎么做微信推文,急?
潮流网站制作头像软件下载,适合母子的网名有哪些?
javascript基本数据类型及类型检测常用方法小结
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
如何制作算命网站,怎么注册算命网站?
如何快速生成ASP一键建站模板并优化安全性?
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
活动邀请函制作网站有哪些,活动邀请函文案?
利用JavaScript实现拖拽改变元素大小
建站之星价格显示格式升级,你的预算足够吗?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
如何用花生壳三步快速搭建专属网站?
网站制作模板下载什么软件,ppt模板免费下载网站?
建站主机与服务器功能差异如何区分?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
c# 在ASP.NET Core中管理和取消后台任务
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
制作网站怎么制作,*游戏网站怎么搭建?
简单实现Android验证码
建站之星代理如何获取技术支持?
已有域名和空间如何快速搭建网站?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
建站之星如何优化SEO以实现高效排名?
网站制作公司,橙子建站是合法的吗?
高性价比服务器租赁——企业级配置与24小时运维服务
建站之星好吗?新手能否轻松上手建站?
怎么将XML数据可视化 D3.js加载XML
微信小程序 五星评分(包括半颗星评分)实例代码
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
长沙企业网站制作哪家好,长沙水业集团官方网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。