# JavaScript 组成
由 ECMScript、DOM、BOM 三大部分组成
# 基本语法
# 输入输出语句
输入输出 | alert(msg); |
| console(msg); |
| prompt(info); |
# 声明变量
声明变量 | var name; |
| let name; |
| const pi = 3.14159; |
var 和 let 声明的变量数据类型可以变化
# 数据类型
分为五大类数字类型、字符串类型、布尔类型、undefined (未定义) 和 null (空)
数据类型 | var num = 10; |
| var str = '字符串'; |
| var str = '字符串'+100+'条'; |
| var bool = true; |
| var un = undefined; |
| var NULL = null; |
# 创建数组
数组 | var arr = new Array(); |
| var array = []; |
# 函数
函数使用分为两步: 声明函数和调用函数
其中声明函数形式为
function 函数名 (形参 1, 形参 2...) {
// 函数体
return 返回值
}
调用函数形式为
函数名 (实参 1, 实参 2...);
函数 | |
| function printf(str) { |
| cons0le.log(str); |
| return 12; |
| } |
| |
| var num = printf('hello world!'); |
另一种声明函数形式 (匿名函数)
vae 变量名 function (形参 1, 形参 2...){
// 函数体
}
调用函数方式
变量名 (实参 1, 实参 2...);
匿名函数 | |
| var num = function printf(str) { |
| cons0le.log(str); |
| return 12; |
| } |
| |
| num('hello world!'); |
# 对象
对象由属性和方法组成。
构造对象有三种方法,分别是利用对象字面量创建对象、利用 new object 创建对象、利用构造函数创建对象。
创建对象前两种方法 | |
| var obj = { |
| name: '列怒欺', |
| age: 22, |
| sec: '男', |
| printf:function (str) { |
| cons0le.log(str); |
| return 12; |
| } |
| } |
| |
| var obj = new object(); |
| obj.name = '列怒欺'; |
| obj.age = 22; |
| obj.sec = '男'; |
| obj.printf = function (str) { |
| cons0le.log(str); |
| return 12; |
| } |
其中利用构造函数创建对象格式为
function () 构造函数名 (形参 1, 形参 2...) {
this. 属性 = 值;
this. 方法 = function () {}
}
new 构造函数名 (实参 1, 实参 2...);
构造函数创建对象 | |
| function Star(name,age,sex) |
| { |
| this.name = name; |
| this.age = age; |
| this.sex = sex; |
| this.printf = function (str) { |
| cons0le.log(str); |
| return 12; |
| } |
| |
| var obj = new Star('列怒欺',22,'男'); |
# for in 语句
作用是遍历对象属性
for in语句 | |
| var obj = new object(); |
| obj.name = '列怒欺'; |
| obj.age = 22; |
| obj.sec = '男'; |
| obj.printf = function (str) { |
| cons0le.log(str); |
| return 12; |
| } |
| |
| for(var k in obj) { |
| console.log(k); |
| } |
# 文档对象模型 (DOM)
主要作用是操作页面元素
# 获取元素
获取元素 | var id = document.getElementById('IDName'); |
| var tag = document.getElementSByTagName('TagName'); |
| var class = document.getElementsByClassName('ClassName'); |
| var selector = document.querySelector('SelectorName'); |
| var selector = document.querySelectorAll('SelectorName'); |
| var body = document.body; |
| var html = document.documentElement; |
# 事件基础
事件三要素:事件源、事件类型、事件处理程序
点击事件 | var btn = document.getElementById('btn'); |
| |
| btn.onclick = function() { |
| aleret('hello'); |
| } |
# 操作元素
主要用 innerText 和 innerHTML (常用) 以及 img、input 等其它操作。
操作元素 | var div = document.getElementById('div'); |
| div.innerText = '修改元素内容'; |
| div.innerHTML = '修改元素内容'; |
# 自定义属性值
自定义属性值 | <div id="demo" index="1" class="nav"></div> |
| |
| |
| div.getAttribute('index'); |
| |
| div.setAttribute('index','2'); |
| |
| div.removeAttribute('index'); |
# 节点属性
节点属性有元素节点、文本节点和属性节点,这里主要是元素节点
获取父节点 | var childNode = document.querySelector('SelectorName'); |
| childNode.parentNode; |
获取子节点 | var parentNode = document.querySelector('SelectorName'); |
| parentNode.childNode; |
获取第一个子元素和最后一个子元素 | var parentNode = document.querySelector('SelectorName'); |
| parentNode.firstElementChild; |
| parentNode.lastElementChild; |
创建与添加节点 | var Node = document.CreateElement('div'); |
| var pos = document.querySelector('SelectorName'); |
| pos.appendChild(Node); |
删除和复制节点 | var parentNode = document.querySelector('SelectorName'); |
| parentNode.removeChild(parentNode.childNodeName); |
| |
| var clone = childNode.CloneNode(); |
| parentNode.appendChild(clone); |
若 CloneNode () 括号里参数为空,则为浅拷贝,只复制标签,不复制内容,含参数 true, 为深拷贝,复制内容和标签。
# 浏览器对象模式 (BOM)
主要作用是进行浏览器与页面的交互
# windows 对象常见事件
# 窗口加载事件
load 需等页面全部加载完才能显示,而 DOMcontentLoaded 是只要 DOM 加载完就显示,不需要页面元素全加载完,会更快一些
窗口加载事件 | windows.addEventListener("load",function(){ |
| |
| }); |
| windows.addEventListener("DOMcontentLoaded",function(){ |
| |
| }); |
# 调整窗口大小事件
调整窗口大小事件 | windows.addEventListener("resize",function(){ |
| |
| }); |
| |
| windows.onresize = function(){ |
| |
| } |
# 定时器
windows.setTimeout(调用函数,[延迟的毫秒数]);延迟的毫秒数不写默认为0,单位为毫秒,调用函数可直接写函数或函数名
windows.clearTimeout(timeoutID);timeoutID是setTimeout函数返回的变量
- 使用 setInterval () 定时器回调函数
windows.setInterval(回调函数,[间隔的毫秒数]);- 停止 setInterval () 定时器回调函数
windows.clearInterval(timeoutID);定时器 | |
| var timer = windows.setTimeout(function(){ |
| |
| },0); |
| |
| clearTimeout(timer); |
| |
| var set = setInterval(function(){ |
| |
| },100) |
| |
| clearInterval(set); |