条件判断语句
if语句
练习
var score=prompt("·········");
alert(score);
条件分支语句
也叫switch语句
语法:switch(条件表达式){
case 表达式:
语句····
break;
case 表达式:
语句····
break;
......
default:
语句....
break;
}
循环语句
通过循环语句可以反复执行一段代码
while循环
语法:
while(条件表达式)
{
语句...
}
先对条件表达式进行判断,再循环
死循环在开发中慎用
do while循环
for循环
对象
Object,除了五种基本数据类型,其余全是对象
对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性
对象的分类
1.内建对象
由ES标准中定义的对象,在任何ES实现中都可以使用。比如:Math,String,Number,Function,Object....
2.宿主对象
由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象。比如:
BOM,DOM
3.自定义对象
由开发人员自己创建的对象
对象的创建
向对象中添加属性
读取对象中的属性
修改对象的属性值
属性名和属性值
属性名
对象的属性名不强制要求遵守标识符的规范,什么乱七八糟的名字都可以使用,但是尽量按照标识符的规范
使用[]这种形式去操作属性,更加的灵活,在[]中可以直接传递一个变量,这样变量值是多少就会读取那个属性
属性值
JS对象的属性值,可以是任意的数据类型,甚至也可以是一个对象,或者一个函数
对象字面量
使用对象字面量来创建一个对象
使用对象字面量,可以在创建对象时,直接指定对象中的属性
语法:{属性名:属性值,属性名:属性值······}
对象字面量的属性名可以加引号也可以不加,建议不加。如果使用一些特殊的名字,必须加引号。
方法
函数也可以也可以称为对象的属性,如果一个函数作为一个对象的属性保存,那我们称这个函数是这个对象的方法。
调用这个函数就说调用对象的方法(method)
但它只是名称上的区别,没有其他区别
函数
函数的简介
函数也是一个对象
函数可以封装一些功能(代码),在需要时可以执行这些功能,可以保存一些代码在需要的时候用。
使用typeof检查一个函数对象时,会返回function
创建一个对象
使用函数声明来创建一个函数
使用函数表达式来创建一个函数(创建一个匿名函数)
函数的参数
调用函数时,解析器不会检查实参的数量,多余实参不会被赋值。如果实参的数量少于形参的数量,则没有对应实参的形参将是undefined
函数的实参可以是任意数据的类型
函数的返回值
可以使用return来设置函数返回值
语法:
return 值;
return后面的值将会作为函数执行结果返回,可以定义一个变量来接收这一结果
return后面的语句都不会执行。
如果return语句后不跟任何值就相当于返回一个undefined,如果不写return,也会返回undefined.
返回值的类型
返回值可以是任意一个数据类型,也可以是一个对象,也可以是一个函数
立即执行函数
正则表达式
简介
正则表达式用于定义一些字符串的规则
计算机可以根据正则表达式,来检查一个字符串是否符合规则,或者将字符串中符合规则的内容提取出来。
创建正则表达式对象
语法:
var 变量=new RegExp("正则表达式","匹配模式");(需要两个参数,两个参数都是字符串)
使用typeof检查正则对象会返回object
正则表达式的方法
test()
使用这个方法可以用来检查一个字符串是否符合正则表达式的规则,如果符合返回true,否则返回false
var reg=new RegExp("a");可以来检查一个字符串是否符合正则表达式的规则。
在构造函数中可以传递一个匹配模式作为第二个参数,可以是i(忽略大小写) g(全局匹配模式)
找什么就写什么
正则语法
使用字面量来创建正则表达式
语法:var 变量=/正则表达式/匹配模式
var reg=new RegExp(“a”,“i”);
reg=/a/i;
console.log(reg); 结果为true;
使用字面量的方式更加简单,使用构造函数更加灵活
[0-9] 任意数字
字符串和正则相关的方法
split()
可以将一个字符串拆分成一个数组
根据任意字母来将字符串拆分,方法中可以传递一个正则表达式作为参数,这样方法将会根据正则表达式去拆分字符串
match()
可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
match()会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果
replace()
正则表达式的语法
量词
通过量词可以设置一个内容出现的次数
{n}正好出现n次
{m,n}出现m~n次
{m,}出现m次以上
+ 至少一个,相当于{1,}
* 0个或者多个,相当于{0,}
?0个或者1个,相当于{0,1}
检查一个字符串是否以哪个字母开头用^
^表示开头
$表示结尾
reg=/^a/ 匹配开头那个a
console.log(reg.test("abbbde"));
结果为true
reg=/a$/ 匹配结尾那个a
如果正则表达式中同时使用^$,则要求字符串必须完全符合正则表达式
检查一个字符串是否含有 .
. 表示任意字符
在正则表达式中使用\作为转义字符
\.来表示
\\ 表示 \
注意
使用构造函数时,由于它的参数是一个字符串,而\是字符串中的转义字符
如果要使用\则需要使用\\来代替
DOM
简介
dom查询
获取元素节点
节点
常用节点分为四类:
文档节点:整个HTML节点
元素节点:HTML文档中的HTML标签
属性节点:元素的属性
文本节点:HTML标签的内容
浏览器已经为我们提供文档节点,对象是window属性
可以在页面中直接使用,文档节点代表的是整个网页
获取到button对象
var btn=document.getElementById("btn");
修改按钮的文字
btn.innerHTML="文字内容";
全选练习
全选按钮
点击按钮后,全被选中
1.为checkedAllBtn绑定单击响应函数
事件
可以在事件对应的属性中设置一些js代码,这样当事件被触发时,这些代码将会执行
onclick,点击鼠标
ondblclick,点两次鼠标
onmousemove,移动鼠标
可以为按钮的对应事件绑定处理函数的形式来响应事件
像这种为单击事件绑定的函数,我们称为单击响应函数
将js代码写到页面下部就是为了可以在页面加载完毕后再执行js代码
onload
onload事件会在整个页面加载完成之后才触发
为window绑定一个onload事件,该事件对应的响应函数将会在页面加载之后进行。
window.onload = function(){
alert("hello");
};
事件的对象
当事件的响应函数被触发时,浏览器每次都会将一个事件对象作为实参传递进响应函数
在事件对象中封装了当前事件相关的一切信息,比如:鼠标的坐标,键盘哪个按键被按下,鼠标滚轮滚动的方向。
onmousemove
该事件将会在鼠标在元素中移动时被触发
clientX可以获取鼠标指针的水平坐标
clientY可以获取鼠标指针的垂直坐标
pageX和pageY可以获取鼠标相对于当前页面的坐标
练习
div随鼠标移动
事件的冒泡(Bubble)
所谓的冒泡指的就是事件的向上传导,当后代元素上的事件被触发时,其祖先元素的相同事件也会被触发
为body绑定一个单击响应函数
document.body.οnclick=function(){
};
事件的委派
指将事件统一绑定给共同的祖先元素,这样当后代上的祖先元素触发时,会一直冒泡到祖先元素,从而通过祖先元素的响应函数来处理事件
事件委派是利用了冒泡,通过委派可以减少事件绑定的次数,提高程序的性能
实现只绑定一次事件,即可应用到多个的元素上,即使元素是后添加的
可以尝试将其绑定给元素的共同祖先元素
事件的绑定
使用addEventListener()可以同时为一个为元素的相同事件绑定多个响应函数,这样当事件被触发时,响应函数将会按照函数的绑定顺序执行
定时器
简介
如果希望一段程序可以每隔一段时间执行一次,可以使用定时调用
setInterval()
--定时调用
--可以将一个函数每隔一段时间执行一次
--延时调用
延时调用一个函数不马上执行,而是隔一段时间后再执行,而且只会执行一次
延时调用和定时调用的区别
定时调用会执行多次,延时调用只会执行一次
延时调用和定时调用实际上是可以互相调用的