之前学过一遍,现在简单复习
基于菜鸟教程,对javascript的关键知识的记录

基础语法

  • 注释:

    //我是注释
  • 数据类型

    var length=16;   //Number
    var points=x*10;//Number
    var lastname="Johnson";//String
    var cars=["SAAB","Volvo","BMW"];//Array
    var person={firstName:"John",lastName:"Doe"}//Object
  • 语句标识符

    语句 描述
    break 用于跳出循环。
    catch 语句块,在 try 语句块执行出错时执行 catch 语句块。
    continue 跳过循环中的一个迭代。
    do … while 执行一个语句块,在条件语句为 true 时继续执行该语句块。
    for 在条件语句为 true 时,可以将代码块执行指定的次数。
    for … in 用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。
    function 定义一个函数
    if … else 用于基于不同的条件来执行不同的动作。
    return 退出函数
    switch 用于基于不同的条件来执行不同的动作。
    throw 抛出(生成)错误 。
    try 实现错误处理,与 catch 一同使用。
    var 声明一个变量。
    while 当条件语句为 true 时,执行语句块。
  • undefined

    Undefined 这个值表示变量不含有值。

    可以通过将变量的值设置为 null 来清空变量。

  • 声明变量类型

    当您声明新变量时,可以使用关键词 "new" 来声明其类型:
    
    var carname=new String;
    var x=      new Number;
    var y=      new Boolean;
    var cars=   new Array;
    var person= new Object;
  • 字符串方法

    更多方法实例可以参见:JavaScript String 对象

    方法 描述
    charAt() 返回在指定位置的字符。
    charCodeAt() 返回在指定的位置的字符的 Unicode 编码。
    concat() 连接两个或更多字符串,并返回新的字符串。
    endsWith() 判断当前字符串是否是以指定的子字符串结尾的(区分大小写)。
    fromCharCode() 将 Unicode 编码转为字符。
    indexOf() 返回某个指定的字符串值在字符串中首次出现的位置。
    includes() 查找字符串中是否包含指定的子字符串。
    lastIndexOf() 从后向前搜索字符串,并从起始位置(0)开始计算返回字符串最后出现的位置。
    match() 查找找到一个或多个正则表达式的匹配。
    repeat() 复制字符串指定次数,并将它们连接在一起返回。
    replace() 在字符串中查找匹配的子串,并替换与正则表达式匹配的子串。
    replaceAll() 在字符串中查找匹配的子串,并替换与正则表达式匹配的所有子串。
    search() 查找与正则表达式相匹配的值。
    slice() 提取字符串的片断,并在新的字符串中返回被提取的部分。
    split() 把字符串分割为字符串数组。
    startsWith() 查看字符串是否以指定的子字符串开头。
    substr() 从起始索引号提取字符串中指定数目的字符。
    substring() 提取字符串中两个指定的索引号之间的字符。
    toLowerCase() 把字符串转换为小写。
    toUpperCase() 把字符串转换为大写。
    trim() 去除字符串两边的空白。

Browser对象

Window 对象属性

属性 描述
closed 返回窗口是否已被关闭。
defaultStatus 设置或返回窗口状态栏中的默认文本。
document 对 Document 对象的只读引用。(请参阅对象)
frames 返回窗口中所有命名的框架。该集合是 Window 对象的数组,每个 Window 对象在窗口中含有一个框架。
history 对 History 对象的只读引用。请参数 History 对象
innerHeight 返回窗口的文档显示区的高度。
innerWidth 返回窗口的文档显示区的宽度。
localStorage 在浏览器中存储 key/value 对。没有过期时间。
length 设置或返回窗口中的框架数量。
location 用于窗口或框架的 Location 对象。请参阅 Location 对象
name 设置或返回窗口的名称。
navigator 对 Navigator 对象的只读引用。请参数 Navigator 对象
opener 返回对创建此窗口的窗口的引用。
outerHeight 返回窗口的外部高度,包含工具条与滚动条。
outerWidth 返回窗口的外部宽度,包含工具条与滚动条。
pageXOffset 设置或返回当前页面相对于窗口显示区左上角的 X 位置。
pageYOffset 设置或返回当前页面相对于窗口显示区左上角的 Y 位置。
parent 返回父窗口。
screen 对 Screen 对象的只读引用。请参数 Screen 对象
screenLeft 返回相对于屏幕窗口的x坐标
screenTop 返回相对于屏幕窗口的y坐标
screenX 返回相对于屏幕窗口的x坐标
sessionStorage 在浏览器中存储 key/value 对。 在关闭窗口或标签页之后将会删除这些数据。
screenY 返回相对于屏幕窗口的y坐标
self 返回对当前窗口的引用。等价于 Window 属性。
status 设置窗口状态栏的文本。
top 返回最顶层的父窗口。

Window对象方法

方法 描述
alert() 显示带有一段消息和一个确认按钮的警告框。
atob() 解码一个 base-64 编码的字符串。
btoa() 创建一个 base-64 编码的字符串。
blur() 把键盘焦点从顶层窗口移开。
clearInterval() 取消由 setInterval() 设置的 timeout。
clearTimeout() 取消由 setTimeout() 方法设置的 timeout。
close() 关闭浏览器窗口。
confirm() 显示带有一段消息以及确认按钮和取消按钮的对话框。
createPopup() 创建一个 pop-up 窗口。
focus() 把键盘焦点给予一个窗口。
getSelection() 返回一个 Selection 对象,表示用户选择的文本范围或光标的当前位置。
getComputedStyle() 获取指定元素的 CSS 样式。
matchMedia() 该方法用来检查 media query 语句,它返回一个 MediaQueryList对象。
moveBy() 可相对窗口的当前坐标把它移动指定的像素。
moveTo() 把窗口的左上角移动到一个指定的坐标。
open() 打开一个新的浏览器窗口或查找一个已命名的窗口。
print() 打印当前窗口的内容。
prompt() 显示可提示用户输入的对话框。
resizeBy() 按照指定的像素调整窗口的大小。
resizeTo() 把窗口的大小调整到指定的宽度和高度。
scroll() 已废弃。 该方法已经使用了 scrollTo() 方法来替代。
scrollBy() 按照指定的像素值来滚动内容。
scrollTo() 把内容滚动到指定的坐标。
setInterval() 按照指定的周期(以毫秒计)来调用函数或计算表达式。
setTimeout() 在指定的毫秒数后调用函数或计算表达式。
stop() 停止页面载入。
postMessage() 安全地实现跨源通信。
属性 说明
appCodeName 返回浏览器的代码名
appName 返回浏览器的名称
appVersion 返回浏览器的平台和版本信息
cookieEnabled 返回指明浏览器中是否启用 cookie 的布尔值
platform 返回运行浏览器的操作系统平台
userAgent 返回由客户机发送服务器的user-agent 头部的值
geolocation 返回浏览器的地理位置信息
language 返回浏览器使用的语言
onLine 返回浏览器是否在线,在线返回 ture,否则返回 false
product 返回浏览器使用的引擎(产品)
方法 描述
javaEnabled() 指定是否在浏览器中启用Java
taintEnabled() 规定浏览器是否启用数据污点(data tainting)

Screen 对象

Screen 对象包含有关客户端显示屏幕的信息。

Note**注意:** 没有应用于 screen 对象的公开标准,不过所有浏览器都支持该对象。

Screen 对象属性

属性 说明
availHeight 返回屏幕的高度(不包括Windows任务栏)
availWidth 返回屏幕的宽度(不包括Windows任务栏)
colorDepth 返回目标设备或缓冲器上的调色板的比特深度
height 返回屏幕的总高度
pixelDepth 返回屏幕的颜色分辨率(每象素的位数)
width 返回屏幕的总宽度

History 对象

History 对象包含用户(在浏览器窗口中)访问过的 URL。

History 对象是 window 对象的一部分,可通过 window.history 属性对其进行访问。

Note**注意:** 没有应用于History对象的公开标准,不过所有浏览器都支持该对象。

History 对象属性

属性 说明
length 返回历史列表中的网址数

History 对象方法

方法 说明
back() 加载 history 列表中的前一个 URL
forward() 加载 history 列表中的下一个 URL
go() 加载 history 列表中的某个具体页面

Location 对象

Location 对象包含有关当前 URL 的信息。

Location 对象是 window 对象的一部分,可通过 **window.location.**xxx 格式的相关属性对其进行访问。

Note**注意:** 没有应用于Location对象的公开标准,不过所有浏览器都支持该对象。

Location 对象属性

属性 描述
hash 返回一个URL的锚部分
host 返回一个URL的主机名和端口
hostname 返回URL的主机名
href 返回完整的URL
pathname 返回的URL路径名。
port 返回一个URL服务器使用的端口号
protocol 返回一个URL协议
search 返回一个URL的查询部分

实例

*// 创建 a 标签并设置 href 属性*
**var** url = document.createElement('a');
url.href = 'https://www.runoob.com/?s=python#test';
console.log(url.href);    *// https://www.runoob.com/?s=python*
console.log(url.protocol); *// https:*
console.log(url.host);    *// www.runoob.com*
console.log(url.hostname); *// www.runoob.com*
console.log(url.port);    *// (输出为空 - https 默认端口为 443)*
console.log(url.pathname); *// /*
console.log(url.search);   *// en-US/search*
console.log(url.hash);    *// #test*
console.log(url.origin);   *// https://www.runoob.com*

存储对象

Web 存储 API 提供了 sessionStorage (会话存储) 和 localStorage(本地存储)两个存储对象来对网页的数据进行添加、删除、修改、查询操作。

  • localStorage 用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去除。
  • sessionStorage 用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。

存储对象属性

属性 描述
length 返回存储对象中包含多少条数据。

存储对象方法

方法 描述
key(n) 返回存储对象中第 n 个键的名称
getItem(keyname) 返回指定键的值
setItem(keyname, value) 添加键和值,如果对应的值存在,则更新该键对应的值。
removeItem(keyname) 移除键
clear() 清除存储对象中所有的键

Web 存储 API

属性 描述
window.localStorage 在浏览器中存储 key/value 对。没有过期时间。
window.sessionStorage 在浏览器中存储 key/value 对。 在关闭窗口或标签页之后将会删除这些数据。

DOM对象

Document 对象属性和方法

HTML文档中可以使用以下属性和方法:

属性 / 方法 描述
document.activeElement 返回当前获取焦点元素
document.addEventListener() 向文档添加句柄
document.adoptNode(node) 从另外一个文档返回 adapded 节点到当前文档。
document.anchors 返回对文档中所有 Anchor 对象的引用。
document.applets 返回对文档中所有 Applet 对象的引用。注意: HTML5 已不支持 <applet> 元素。
document.baseURI 返回文档的绝对基础 URI
document.body 返回文档的body元素
document.close() 关闭用 document.open() 方法打开的输出流,并显示选定的数据。
document.cookie 设置或返回与当前文档有关的所有 cookie。
document.createAttribute() 创建一个属性节点
document.createComment() createComment() 方法可创建注释节点。
document.createDocumentFragment() 创建空的 DocumentFragment 对象,并返回此对象。
document.createElement() 创建元素节点。
document.createTextNode() 创建文本节点。
document.doctype 返回与文档相关的文档类型声明 (DTD)。
document.documentElement 返回文档的根节点
document.documentMode 返回用于通过浏览器渲染文档的模式
document.documentURI 设置或返回文档的位置
document.domain 返回当前文档的域名。
document.domConfig 已废弃。返回 normalizeDocument() 被调用时所使用的配置。
document.embeds 返回文档中所有嵌入的内容(embed)集合
document.forms 返回对文档中所有 Form 对象引用。
document.getElementsByClassName() 返回文档中所有指定类名的元素集合,作为 NodeList 对象。
document.getElementById() 返回对拥有指定 id 的第一个对象的引用。
document.getElementsByName() 返回带有指定名称的对象集合。
document.getElementsByTagName() 返回带有指定标签名的对象集合。
document.images 返回对文档中所有 Image 对象引用。
document.implementation 返回处理该文档的 DOMImplementation 对象。
document.importNode() 把一个节点从另一个文档复制到该文档以便应用。
document.inputEncoding 返回用于文档的编码方式(在解析时)。
document.lastModified 返回文档被最后修改的日期和时间。
document.links 返回对文档中所有 Area 和 Link 对象引用。
document.normalize() 删除空文本节点,并连接相邻节点
document.normalizeDocument() 删除空文本节点,并连接相邻节点的
document.open() 打开一个流,以收集来自任何 document.write() 或 document.writeln() 方法的输出。
document.querySelector() 返回文档中匹配指定的CSS选择器的第一元素
document.querySelectorAll() document.querySelectorAll() 是 HTML5中引入的新方法,返回文档中匹配的CSS选择器的所有元素节点列表
document.readyState 返回文档状态 (载入中……)
document.referrer 返回载入当前文档的文档的 URL。
document.removeEventListener() 移除文档中的事件句柄(由 addEventListener() 方法添加)
document.renameNode() 重命名元素或者属性节点。
document.scripts 返回页面中所有脚本的集合。
document.strictErrorChecking 设置或返回是否强制进行错误检查。
document.title 返回当前文档的标题。
document.URL 返回文档完整的URL
document.write() 向文档写 HTML 表达式 或 JavaScript 代码。
document.writeln() 等同于 write() 方法,不同的是在每个表达式之后写一个换行符。

在 W3C DOM核心,文档对象 继承节点对象的所有属性和方法。

很多属性和方法在文档中是没有意义的。

HTML 文档对象可以避免使用这些节点对象和属性:

属性 / 方法 避免的原因
document.attributes 文档没有该属性
document.hasAttributes() 文档没有该属性
document.nextSibling 文档没有下一节点
document.nodeName 这个通常是 #document
document.nodeType 这个通常是 9(DOCUMENT_NODE)
document.nodeValue 文档没有一个节点值
document.ownerDocument 文档没有主文档
document.ownerElement 文档没有自己的节点
document.parentNode 文档没有父节点
document.previousSibling 文档没有兄弟节点
document.textContent 文档没有文本节点

Element 对象

以上属性和方法可适用于所有 HTML 元素:

属性 / 方法 描述
element.accessKey 设置或返回accesskey一个元素
element.addEventListener() 向指定元素添加事件句柄
element.appendChild() 为元素添加一个新的子元素
element.attributes 返回一个元素的属性数组
element.childNodes 返回元素的一个子节点的数组
element.children 返回元素的子元素的集合
element.classList 返回元素的类名,作为 DOMTokenList 对象。
element.className 设置或返回元素的class属性
element.clientTop 表示一个元素的顶部边框的宽度,以像素表示。
element.clientLeft 表示一个元素的左边框的宽度,以像素表示。
element.clientHeight 在页面上返回内容的可视高度(高度包含内边距(padding),不包含边框(border),外边距(margin)和滚动条)
element.clientWidth 在页面上返回内容的可视宽度(宽度包含内边距(padding),不包含边框(border),外边距(margin)和滚动条)
element.cloneNode() 克隆某个元素
element.compareDocumentPosition() 比较两个元素的文档位置。
element.contentEditable 设置或返回元素的内容是否可编辑
element.dir 设置或返回一个元素中的文本方向
element.firstElementChild 返回元素的第一个子元素
element.firstChild 返回元素的第一个子节点
element.focus() 设置文档或元素获取焦点
element.getAttribute() 返回指定元素的属性值
element.getAttributeNode() 返回指定属性节点
element.getElementsByTagName() 返回指定标签名的所有子元素集合。
element. getElementsByClassName() 返回文档中所有指定类名的元素集合,作为 NodeList 对象。
element.getFeature() 返回指定特征的执行APIs对象。
element.getUserData() 返回一个元素中关联键值的对象。
element.hasAttribute() 如果元素中存在指定的属性返回 true,否则返回false。
element.hasAttributes() 如果元素有任何属性返回true,否则返回false。
element.hasChildNodes() 返回一个元素是否具有任何子元素
element.hasFocus() 返回布尔值,检测文档或元素是否获取焦点
element.id 设置或者返回元素的 id。
element.innerHTML 设置或者返回元素的内容。
element.insertBefore() 现有的子元素之前插入一个新的子元素
element.isContentEditable 如果元素内容可编辑返回 true,否则返回false
element.isDefaultNamespace() 如果指定了namespaceURI 返回 true,否则返回 false。
element.isEqualNode() 检查两个元素是否相等
element.isSameNode() 检查两个元素所有有相同节点。
element.isSupported() 如果在元素中支持指定特征返回 true。
element.lang 设置或者返回一个元素的语言。
element.lastChild 返回最后一个子节点
element.lastElementChild 返回指定元素的最后一个子元素
element.matches() 如果元素匹配指定的 CSS 选择器,matches() 方法就返回 true,否则返回 false。
element.namespaceURI 返回命名空间的 URI。
element.nextSibling 返回该元素紧跟的一个节点
element.nextElementSibling 返回指定元素之后的下一个兄弟元素(相同节点树层中的下一个元素节点)。
element.nodeName 返回元素的标记名(大写)
element.nodeType 返回元素的节点类型
element.nodeValue 返回元素的节点值
element.normalize() 使得此成为一个"normal"的形式,其中只有结构(如元素,注释,处理指令,CDATA节和实体引用)隔开Text节点,即元素(包括属性)下面的所有文本节点,既没有相邻的文本节点也没有空的文本节点
element.offsetHeight 返回任何一个元素的高度包括边框(border)和内边距(padding),但不包含外边距(margin)
element.offsetWidth 返回元素的宽度,包括边框(border)和内边距(padding),但不包含外边距(margin)
element.offsetLeft 返回当前元素的相对水平偏移位置的偏移容器
element.offsetParent 返回元素的偏移容器
element.offsetTop 返回当前元素的相对垂直偏移位置的偏移容器
element.ownerDocument 返回元素的根元素(文档对象)
element.parentNode 返回元素的父节点
element.previousSibling 返回某个元素紧接之前元素
element.previousElementSibling 返回指定元素的前一个兄弟元素(相同节点树层中的前一个元素节点)。
element.querySelector() 返回匹配指定 CSS 选择器元素的第一个子元素
document.querySelectorAll() 返回匹配指定 CSS 选择器元素的所有子元素节点列表
element.removeAttribute() 从元素中删除指定的属性
element.removeAttributeNode() 删除指定属性节点并返回移除后的节点。
element.removeChild() 删除一个子元素
element.removeEventListener() 移除由 addEventListener() 方法添加的事件句柄
element.replaceChild() 替换一个子元素
element.scrollHeight 返回整个元素的高度(包括带滚动条的隐蔽的地方)
element.scrollLeft 返回当前视图中的实际元素的左边缘和左边缘之间的距离
element.scrollTop 返回当前视图中的实际元素的顶部边缘和顶部边缘之间的距离
element.scrollWidth 返回元素的整个宽度(包括带滚动条的隐蔽的地方)
element.setAttribute() 设置或者改变指定属性并指定值。
element.setAttributeNode() 设置或者改变指定属性节点。
element.setIdAttribute()
element.setIdAttributeNode()
element.setUserData() 在元素中为指定键值关联对象。
element.style 设置或返回元素的样式属性
element.tabIndex 设置或返回元素的标签顺序。
element.tagName 作为一个字符串返回某个元素的标记名(大写)
element.textContent 设置或返回一个节点和它的文本内容
element.title 设置或返回元素的title属性
element.toString() 一个元素转换成字符串
nodelist.item() 返回某个元素基于文档树的索引
nodelist.length 返回节点列表的节点数目。

attr对象

属性 / 方法 描述
attr.isId 如果属性是 ID 类型,则 isId 属性返回 true,否则返回 false。
attr.name 返回属性名称
attr.value 设置或者返回属性值
attr.specified 如果属性被指定返回 true ,否则返回 false
nodemap.getNamedItem() 从节点列表中返回的指定属性节点。
nodemap.item() 返回节点列表中处于指定索引号的节点。
nodemap.length 返回节点列表的节点数目。
nodemap.removeNamedItem() 删除指定属性节点
nodemap.setNamedItem() 设置指定属性节点(通过名称)

在 W3C DOM 内核中, Attr (属性) 对象继承节点对象的所有属性和方法 。

在 DOM 4 中, Attr (属性) 对象不再从节点对象中继承。

从长远的代码质量来考虑,在属性对象中你需要避免使用节点对象属性和方法:

属性 / 方法 避免原因
attr.appendChild() 属性没有子节点
attr.attributes 属性没有属性
attr.baseURI 使用 document.baseURI 替代
attr.childNodes 属性没有子节点
attr.cloneNode() 使用 attr.value 替代
attr.firstChild 属性没有子节点
attr.hasAttributes() 属性没有属性
attr.hasChildNodes 属性没有子节点
attr.insertBefore() 属性没有子节点
attr.isEqualNode() 没有意义
attr.isSameNode() 没有意义
attr.isSupported() 通常为 true
attr.lastChild 属性没有子节点
attr.nextSibling 属性没有兄弟节点
attr.nodeName 使用 attr.name 替代
attr.nodeType 通常为 2 (ATTRIBUTE-NODE)
attr.nodeValue 使用 attr.value 替代
attr.normalize() 属性没有规范
attr.ownerDocument 通常为你的 HTML 文档
attr.ownerElement 你用来访问属性的 HTML 元素
attr.parentNode 你用来访问属性的 HTML 元素
attr.previousSibling 属性没有兄弟节点
attr.removeChild 属性没有子节点
attr.replaceChild 属性没有子节点
attr.textContent 使用 attr.value 替代

HTML DOM事件

鼠标事件

属性 描述 DOM
onclick 当用户点击某个对象时调用的事件句柄。 2
oncontextmenu 在用户点击鼠标右键打开上下文菜单时触发
ondblclick 当用户双击某个对象时调用的事件句柄。 2
onmousedown 鼠标按钮被按下。 2
onmouseenter 当鼠标指针移动到元素上时触发。 2
onmouseleave 当鼠标指针移出元素时触发 2
onmousemove 鼠标被移动。 2
onmouseover 鼠标移到某元素之上。 2
onmouseout 鼠标从某元素移开。 2
onmouseup 鼠标按键被松开。 2

键盘事件

属性 描述 DOM
onkeydown 某个键盘按键被按下。 2
onkeypress 某个键盘按键被按下并松开。 2
onkeyup 某个键盘按键被松开。 2

框架/对象(Frame/Object)事件

属性 描述 DOM
onabort 图像的加载被中断。 ( ) 2
onbeforeunload 该事件在即将离开页面(刷新或关闭)时触发 2
onerror 在加载文档或图像时发生错误。 ( , 和 )
onhashchange 该事件在当前 URL 的锚部分发生修改时触发。
onload 一张页面或一幅图像完成加载。 2
onpageshow 该事件在用户访问页面时触发
onpagehide 该事件在用户离开当前网页跳转到另外一个页面时触发
onresize 窗口或框架被重新调整大小。 2
onscroll 当文档被滚动时发生的事件。 2
onunload 用户退出页面。 ( 和 ) 2

表单事件

属性 描述 DOM
onblur 元素失去焦点时触发 2
onchange 该事件在表单元素的内容改变时触发( , ,