Java教程
JavaScript DOM
本文主要是介绍JavaScript DOM,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
了解一下
JavaScript 由 Netscpae 公司与 Sun 公司合作开发
ECMA (欧洲计算机制造商协会)+ Netscape + Sun:ECMAScript (JavaScript就是ECMAScript)
微软:VBScript、JScript
JavaScript 与 Java 没有任何联系
JavaScript 曾用名:LiveScript
BOM:浏览器对象模型,使用JavaScrip 来调整浏览器的一些属性,如浏览器窗口高度、宽度、位置等
DOM:一套对文档的内容进行抽象和概念化的方法(可类比“世界对象模型”)
浏览器战争
DHTML 动态HTML
关于API的理解
WaSP 一个Web标准计划
WebKit Safari、Chrome采用的一个开源浏览器引擎
Gecko Firefox的核心,一个开源浏览器引擎
Trident IE的核心
Ajax 异步数据传输技术
关于 JavaScrip 代码,你有3种选择:
<head> 中的 <script> 之间
把 JavaScrip 代码存为.js 文件,然后通过 <script> 的 src 属性引用
最好把 <script> 标签放在HTML文档最后,<body> 之前,这样能使浏览器更快地加载
脚本默认是 JavaScript ,没有必要在 <script> 中写 type 属性
解释型语言(如JavaScript)中的错误只能等到解释器执行到有关代码时才能被发现
英语是一种解释性语言,你相当于一个英语解释器
建议在每条语句末尾添加一个分号以保持代码可读性
注释(comment):
// ......
/* ...... */
JS允许直接使用变量,不用事先声明
事先声明是一种良好的编程习惯
JS 区分字母大小写
不允许变量名中包含空格和标点符号,可以包含"$"
变量名不能以数字开头
字面量
关键字
变量
JS是一种弱类型语言,不需要数据类型声明
数据类型
字符串
单双引号都可
必要时用反斜杠进行转义
数值
正、负
整形、浮点
布尔值
数组
用关键字 Array 声明
直接方括号创建
传统数组
关联数组
JS中所有变量实际上都是对象
对象
关键字 Object 声明
直接花括号创建
属性,隶属于某个特定对象的变量
方法,只有某个特定对象才能调用的函数
属性和方法都使用“.”来访问
创建实例使用 new 关键字
。。。。。跳过运算符、流程控制语句
可以把函数当成一种数据类型来使用
推荐的变量和函数名命名:变量的单词间用下划线分隔,函数名的各个单词首字母大写(驼峰法)
变量的作用域
对象
用户定义对象 我们自己定义的对象
内建对象 JS预先定义好的对象
宿主对象 运行环境提供
DOM
一份文档就是一颗节点树
节点
元素节点
属性节点
文本节点
获取元素节点的3种方法
getElementById() 返回一个对象
getElementsByTagName() 返回一个对象数组
getElementsByClassName()
获取和设置属性
getAttribute()
setAttribute()
事件处理函数
onmouseover
onmouseout
onclick 鼠标点击触发,用Tab键移动到某个链接然后按下回车也会触发
onload
onkeypress 按下任何一个键盘上任何一个键都会触发onkeypress事件(不建议使用)
属性 childNodes 可以获取一个元素的所有子元素,返回一个数组
属性 nodeType
元素节点的 nodeType 的值是1
属性节点的 nodeType 的值是2
文本节点的 nodeType 的值是3
nodeValue
firstChild
lastChild
window.open()
平稳退化(graceful degradation):虽然某些功能无法使用,但最基本的操作仍能顺利完成
"javascript:"伪协议(应当避免使用)
渐近增强
分离JavaScript
向后兼容
对象检测—— if 语句判断浏览器是否支持JS的一些属性
浏览器嗅探
性能考虑
减少访问对DOM的访问,减少标记以减小DOM树的规模
能合并在一个脚本中写尽量合并,脚本在文档末尾,<body>之前通过<script>引入
压缩脚本:使用代码压缩工具把脚本中不必要的空格、注释等删掉
网页加载完毕时会触发一个onload事件
nodeName 返回的值都是大写字母
DOM Core 与 HTML-DOM
行为、结构、样式应尽可能地分离
一条建议的原则:如果想用JavaScript给某个网页添加一些行为,就不应该让JavaScript代码对这个网页的结构有任何的依赖
将多个函数绑定到onload上
document.write
innerHTML
DOM 提供了一个标记的非常详细的拓扑结构,像手术刀一样精细,而这个标记在 innerHTML 看来则比较粗糙,不关注细枝末节
在浏览器看来,DOM 节点树才是文档
createElement() 创建一个元素节点
appendChild() 将一个节点添加到文档的节点树
createTextNode() 创建一个文本节点
insertBefore() 将一个新元素插入到一个现有元素的前面
parentNode
并没有在现有元素之后插入一个新元素的“insertAfter()”
nextSibling 下一个节点
Ajax
对页面的请求以异步方式发送到服务器,不必用整个页面来响应请求,响应时间更快了
核心是 XMLHttpRequest 对象,通过这个对象,JavaScript 可以自己发送请求和处理响应,充当着浏览器中的脚本(客户端)和服务器之间的中间人的角色
不同浏览器实现 XMLHttpRequest 对象的方式不同
XML HttpRequest 对象的 open 方法用来指定服务器上将要访问的文件,指定请求类型:GET、POST或SEND(第三个参数指定请求是否以异步方式发送和处理)
onreadystatechange 是一个事件处理函数,会在服务器给 XMLHttpRequest 对象送回响应的时候被触发执行,可以根据服务器的具体响应做相应的处理(给onreadystatechange 指定或引用一个函数,指定函数引用时,加括号表示立即调用该函数)
XML HttpRequest 对象的 send 方法发送请求
服务器在向 XMLHttpRequest 对象发回响应时,该对象有许多属性可用,浏览器会在不同阶段更新 readyState 属性的值,readyState 属性有5个可能的值:
0:未初始化
1:正在加载
2:加载完毕
3:正在交互
4:完成
readyState 属性的值变成4后,就可以访问服务器发送回来的数据了,通过2个属性来完成:
responseText 保存文本字符串形式的数据
responseXML 保存 Content-Type 头部中指定为"text/xml"的数据,是一个 DocumentFragment 对象
使用 XMLHttpRequest 对象发送的请求只能访问与其 HTML 处于同一个域中的数据,不能向其他域发送请求
有的浏览器会限制 Ajax 请求使用的协议
异步请求的异步性:脚本在发送 XMLHttpRequest 请求后,仍然会继续执行,不会等待响应返回
Hijax
借用hijack(劫持)一词的发音和含义,意为拦截用户操作触发的请求
“渐进增强地使用Ajax”
首字母缩写词(acronym)例如:DOM(念成一个单词dom),对应标签 <acronym>
缩略语(abbreviation)例如:D-O-M,对应标签 <abbr>
title 属性
HTML5 中,<acronym> 已被 <abbr> 代替
就像可以使用我们自己的CSS样式表去取代浏览器的默认样式表一样,也可以使用DOM去改变浏览器的默认行为
在编写DOM脚本时,应当尽可能地去检查nodeType的值,以确定当前节点的是元素节点还是文本节点或者属性节点
JavaScript只应用来充实文档的内容,要避免使用DOM技术来创建核心内容
DOM技术不仅可以用来改变网页的结构,还可以用来更新HTML 页面元素的 CSS 样式
无论CSS样式属性的名字里有多少个连字符,DOM一律采用驼峰命名法表示它们,如DOM属性marginTopWidth对应着CSS属性margin-top-width
通过 style 属性使用DOM只能返回内嵌样式
使用DOM设置样式时,style对象的属性值必须放在单/双引号里
何时用 DOM 脚本设置样式
某些时候,CSS 无法根据元素之间的相对位置关系找出某个特定的元素
一些 CSS 不能处理或难以部署的情况
响应一些事件
CMS 内容管理系统
className 属性
不直接使用DOM设置或修改样式,而是通过JavaScript代码去更新元素的class属性,通过CSS去设置样式
对函数进行抽象:让你写的函数更加通用
setTimeout()
clearTimeout()
Math.ceil()
Math.floor()
Math.round()
addEventListener()
在实际的开发中,不可能一页一页地编辑导航链接,常见的做法是通过服务器端包含技术,把包含导航标记的片段插入到每个页面中
服务器端包含可以把重用标记块集中保存
库可以把你从开发工作中解脱出来,让你更专注于更重要的细节,极大地提高工作效率,使用库之前先搞清楚哪个库适合自己的需要,几个有代表性的库:
jQuery
Prototype
The Yahoo User Interface Library(YUI)
Dojo Toolkit
MooTools
CDN
如果觉得依赖CDN不保险,可以再提供一个后备<script>标签,这样即使CDN服务器出现问题也不会影响你的网站
多数库都采用的语法:连缀、迭代
很多库都将$()函数作为其选择器方法的简写
这篇关于JavaScript DOM的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
您可能喜欢
JavaMailSender是什么,怎么使用?-icode9专业技术文章分享
11-15
JWT 用户校验学习:从入门到实践
11-15
Nest学习:新手入门全面指南
11-15
RestfulAPI学习:新手入门指南
11-15
Server Component学习:入门教程与实践指南
11-15
动态路由入门:新手必读指南
11-15
JWT 用户校验入门:轻松掌握JWT认证基础
11-15
Nest后端开发入门指南
11-15
Nest后端开发入门教程
11-15
RestfulAPI入门:新手快速上手指南
11-15
Server Action入门:新手必读教程
11-15
Server Component入门:新手必读教程
11-15
抽离公共代码教程:简单易懂的入门指南
11-15
动态路由教程:轻松入门与实战指南
11-15
Restful API教程:入门与实践指南
11-15
栏目导航
前端开发
HTML5教程
CSS教程
Javascript
jQuery教程
AJAX教程
Node.js教程
XML教程
正则表达式
后端开发
Go教程
C/C++教程
消息队列MQ
Net Core教程
Asp.net教程
Java教程
PHP教程
移动端开发
微信公众号开发
小程序开发
Swift教程
IOS教程
Kotlin教程
Android开发
数据库
Redis教程
MongoDB教程
PostgreSQL教程
Oracle教程
MariaDB教程
SqLite教程
MySql教程
SqlServer教程
服务器运维
Kubernetes
Docker容器
linux shell
Nginx教程
网站安全
PowerShell教程
Linux教程
人工智能
TensorFlow教程
Python教程
机器学习
人工智能学习
区块链
区块链技术
游戏开发
游戏编程
Unity3D教程
网站运营
网站策划
网站优化
建站知识
大数据/云计算
云计算
Hadoop教程
软件工程
软件/开发工具使用
Git教程
资讯