我所理解的ECMAScript、DOM、BOM---写给新手们
像很多新手一样,我知道js有三部分组成,即ECMAScript、DOM、BOM三部分组成,ECMAScript是核心解释器、DOM(Document Object Model)是文档对象模型、BOM(Browser Object Model)是浏览器对象模型,但是我并没有完全理解其中的含义,还是会经不住去问:它们到底是什么?所以今天我和好朋友坐下来好好探讨了一下,来弥补这个小小的漏洞,如果有哪些不对的地方,还望看到的朋友指正;
ECMAScript也是一种语言,它本身不包含输入输出定义;ECMA-262规定了语法、类型、语句、关键词、保留字、操作符、对象,ECMAScript就是对实现该规定的各个方面内容的语言的描述。javascript实现了ECMAScript。
DOM是文档对象模型,它主要包含了获取元素、修改样式、操作元素三个方面的内容,我们的绝大部分操作都是DOM操作,DOM操作大部分是可以兼容的,因为多个浏览器具有兼容写法。我们这里还可以介绍一下DOM的一些具体的内容。
(一)、DOM树:文档的结构
(二)、DOM结构
1、获取父节点 obj.parentNode
最大的祖宗是document,在往上就是null
2、获取子节点 childNodes 获取子节点,包括文本节点
节点类型:文本节点、标签节点
检测节点的类型可以用nodeType:文本节点是3;标签节点是1;documnent是9
获取子节点的另一个方法是 children ,但是它和childNodes是有区别的:
(1)它只包括一级子节点,即只包括它的儿女,不包括它的孙子,孙女
(2)它不会获取到文本节点
3、获取上一个兄弟节点
obj.previousElementSibling 兼容:高版本浏览器
obj.previousSibling 兼容:ie6,7,8
兼容写法
obj.previousElementSibling||obj.previousSibling;
获取下一个兄弟节点
obj.nextElementSibling 兼容:高版本浏览器
obj.nextSibling 兼容:ie6,7,8
兼容写法
obj.nextElementSibling||obj.nextSibling;
4、获取首尾子节点
首子节点
父级.firstElementChild 兼容高版本浏览器
父级.firstChild 兼容ie6,7,8
兼容写法
父级.firstElementChild||父级.firstChild
尾子节点
父级.lastElementChild 兼容高版本浏览器
父级.lastChild 兼容ie6,7,8
兼容写法
父级.lastElementChild||父级.lastChild
PS:这样写看起来太麻烦,所以我们完全可以用children方法搞定
首子节点 obj.children[0];
尾子节点 obj.children[obj.children.length-1];
获取节点的详细内容就讲到这里,之后还有获取物体信息和创建元素
5、物体信息
obj.offsetWidth 获取盒子模型的宽度
obj.offsetHeight 获取盒子模型的高度
obj.offsetLeft 获取元素距离定位父级左边距。
obj.offsetTop 获取元素距离定位父级上边距
没有offsetRight/offsetBottom
obj.offsetParent 获取定位父级
这里需要顺带提一下parentNode和offsetParent都是获取父级,但是它们有什么区别呢?parentNode是获取结构上的父级,而offsetParent是获取定位上的父级。
6、创建元素
document.createElement('标签名')
添加元素:
父级的最后面添加了一个元素:父级.appendChild(新创建的对象);
把一个元素插入到另一个元素之前:父级.insertBefore(要插入的元素,插入到谁之前);
删除元素:父级.removeChild(要删除的对象);
7、克隆元素
obj.cloneNode();只会克隆这个标签
obj.cloneNode(true) 深度克隆元素,包括属性内容一起克隆
*注意:id也会被一起克隆。所以如果有id,每次克隆之后,需要去除id,obj.id='';
BOM是浏览器对象模型,包括浏览器的一些操作,如window.open、window.alert、window.close等,BOM介于各个浏览器厂商对浏览器的不同规定,所以兼容性很差。
其中比较重要的一些内容,我们是需要知道的;
1、获取浏览器的详细信息:window.navigator.userAgent
2、onscroll 当页面滚动时触发。
滚动距离(页面滚了多少它就是多少)
document.documentElement.scrollTop;不兼容chrome
document.body.scrollTop;兼容chrome的。
兼容写法:
document.documentElement.scrollTop||document.body.scrollTop;
3、获取可视区高度
document.documentElement.clientHeight;
获取可视区高度
document.documentElement.clientWidth
4、改变窗口大小事件 onresize
好了,相信大家现在和我一样,对这方面的基础知识应该不会有太多疑问了,我们一起加油吧!
我所理解的ECMAScript、DOM、BOM---写给新手们的更多相关文章
- DOM&BOM笔记
day01正课:1. DOM概述2. ***DOM树3. *查找 1. DOM概述: DHTML:动态网页技术的统称 DHTML=HTML+CSS+JS 鄙视题: HTML XHTML DHTML X ...
- JavaScript·DOM,BOM
YI.DOM 1.创建DOM 2.删除DOM 3.文档碎片 文档碎片可以提高DOM操作性能(理论上) 文档碎片(类似于一个口袋,先将多个元素放在口袋里,放完之后,再将口袋放到最终要插入的元素中): d ...
- 什么是BOM?,什么是DOM? BOM跟DOM之间的关系
什么是BOM? BOM是browser object model的缩写,简称浏览器对象模型.是用来获取或设置浏览器的属性.行为,例如:新建窗口.获取屏幕分辨率.浏览器版本号等. 比如 alert(); ...
- js初级DOM&BOM知识点总结
第一章 js的组成DOM BOM ECMAScript javaScript 是一种直译是脚本语言 js语言特点 .脚本编写语言 .基于对象的语言 .简单性 .动态性 .安全性 .跨平台性 C/S是C ...
- 深入理解JPEG图像格式Jphide隐写
0x00 隐写原理 Jphide是基于最低有效位LSB的JPEG格式图像隐写算法,使用JPEG图像作为载体是因为相比其他图像格式更不容易发现隐藏信息,因为JPEG图像在DCT变换域上进行隐藏比空间域隐 ...
- 写给新手的WebAPI实践
此篇是写给新手的Demo,用于参考和借鉴,用于发散思路.老鸟可以忽略了. 自己经常有这种情况,遇到一个新东西或难题,在了解和解决之前总是说“等搞定了一定要写篇文章记录下来”,但是当掌握了之后,就感觉好 ...
- JavaScript学习总结(一)——ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
一.JavaScript简介 JavaScript是一种解释执行的脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型,它遵循ECMAScript标准.它的解释器被称为JavaScript引 ...
- JavaScript的组成—ECMAScript、BOM和DOM
JavaScript 是一种基于 ECMAScript 规范的脚本语言,并在此基础上进行了自己的封装.ECMAScript 不是一种编程语言,仅仅是一种脚本语言规范,由欧洲计算机协会制定和发布,任 ...
- 关于dom&bom
javascript 有三部分构成,ECMAScript,DOM和BOM,根据宿主(浏览器)的不同,具体的表现形式也不尽相同,ie和其他的浏览器风格迥异. 1. DOM 是 W3C的标准:[所有浏览器 ...
随机推荐
- sqlite在火狐中安装及使用
1.SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌入 ...
- python批量进行文件修改操作
python批量修改文件扩展名 在网上下载了一些文件,因为某种原因,扩展名多了一个后缀'.xxx',手动修改的话因为文件太多,改起来费时费力,于是决定写个小脚本进行修改. 1.要点: import r ...
- linux实践之程序破解
linux实践之程序破解 这次的实践是文件破解,让我们从login可执行文件开始吧! 首先我们执行一下这个可执行程序 ①我们希望在不知道密码的情况下,能够登陆进去.且无论密码是什么,都是提示“on y ...
- mysql 联合查询后update
SELECT a.user_name,a.avatar,a.nicheng,a.user_rank,b.rank_name,b.rank_img FROM ecs_users a , ecs_user ...
- 深度学习笔记(六)finetune
转自Caffe fine-tuning 微调网络 一般来说我们自己需要做的方向,比如在一些特定的领域的识别分类中,我们很难拿到大量的数据.因为像在ImageNet上毕竟是一个千万级的图像数据库,通常我 ...
- MWeb 1.7.1 版发布!支持导出为 RTF 和 Docx、发布到 Evernote 带样式、文档库备份和新网站主题等大量改进!
编辑器及发布服务改进 增加设置图片宽度和居左.居右.居中的语法. 如: 这样表示设置图片宽度为 450.其中 -w450 为设置语法,生成 HTML 时会自动 ...
- MWeb 1.3.7 发布!增加发布到 Wordpress 等支持 MetaWeblog API 的服务,如:Wordpress 博客、新浪博客、cnblogs、oschina。
MWeb 1.3.7 版的新功能 增加发布到 Wordpress 等支持 Metaweblog API 的服务,目前经测试过的有: Wordpress 博客.新浪博客.cnblogs.oschina. ...
- Spring事务传播属性
Spring 对事务控制的支持统一在 TransactionDefinition 类中描述,该类有以下几个重要的接口方法: int getPropagationBehavior():事务的传播行为 i ...
- cookie和session简单的用法
一.登录成功则设置cookie和session 二.在登录页判断是否已记住密码 三.在首页判断,和创建会话区 四.在首页执行并显示
- SQL语句总结
SQL UNION 操作符合并两个或多个 SELECT 语句的结果. 语法: SELECT column_name(s) FROM table1 UNION SELECT ...