JavaScript

Function:函数对象

1、创建:

<script>
	//1.创建方式1(不常用)
	var fun1 = new Function("a", "b", "document.write((a + b) + '<br>');");
	fun1(2, 6);
	//2.创建方式2
	function fun2(a, b) {
		document.write((a + b) + "<br>");
	}
	fun2(3, 4);
	//3.创建方式3
	var fun3 = function(a, b) {
		document.write((a + b) + "<br>");
	}
	fun3(1, 2);
</script>

2、属性:length属性代表形参个数。

document.write(fun1.length + "<br>");

3、特点:

①方法定义时,形参的类型不用写,返回值类型也不写。

②方法是一个对象,如果定义名称相同的方法,会覆盖。

③在JS中,方法的调用只与方法的名称有关,与参数列表无关。

④在方法声明中有一个隐藏的内置对象(数组),arguments,封装所有的实际参数。例如:求任意个数的和。

function add() {
	var sum = 0;
	for(var i = 0; i < arguments.length; i++) {
		sum += arguments[i];
	}
	return sum;
}
var sum = add(1, 2, 3, 4, 5);
document.write(sum + "<br>");

Array:数组对象

1、创建:

var arr1 = new Array(1, 2, 3);
var arr2 = new Array(2); // 如果只有一个数,则代表数组长度
var arr3 = new Array();
var arr4 = [1, 2, 3, 4];

2、属性:length代表数组长度。

document.write(arr5.length);

3、方法:

①join(参数):将数组中的元素按照指定的分隔符拼接为字符串。

var arr4 = [1, 2, 3, 4];
document.write(arr4.join("++"));

结果:

②push():向数组的末尾添加一个或更多元素,并返回数组长度。

4、特点:

①JS中,数组元素的类型可变。

②JS中,数组长度可变。

var arr5 = [1, "abc", true];
document.write(arr5 + "<br>");
arr5[8] = 25;
document.write(arr5 + "<br>");

结果:

Date:日期对象

<script>
	//创建
	var date = new Date();
	document.write(date + "<br>");
	//根据本地时间格式,把Date对象转换为字符串
	document.write(date.toLocaleString() + "<br>");
	//返回1970年1月1日至今的毫秒数
	document.write(date.getTime() + "<br>");
</script>

RegExp:正则表达式对象

//  \w:[0-9],[a-z],[A-Z],_
var reg1 = new RegExp("\\w{6,12}");
var reg2 = /\w{6,12}/;
document.write(reg1 + "<br>");
document.write(reg2 + "<br>");
			
var username = "zhangsan";
var flag1 = reg1.test(username);
var flag2 = reg2.test(username);
document.write(flag1 + "<br>");
document.write(flag2 + "<br>");

Global

<script>
	var str1 = "无情哈拉少";
	var encode = encodeURI(str1);
	document.write(encode + "<br>");
	var str2 = decodeURI(encode);
	document.write(str2 + "<br>" + "<br>");
			
	var str3 = "http://www.baidu.com?wd=无情哈拉少";
	var en1 = encodeURI(str3);
	var en2 = encodeURIComponent(str3); // 编码的字符更多
	document.write(en1 + "<br>");
	document.write(en2 + "<br>" + "<br>");
			
	// parseInt():将字符串转换为数字
	// 逐一判断每一个字符是不是数字,直到不是数字为止,将前边数字部分转为number
	var str4 = "123abc";
	var num1 = parseInt(str4);
	document.write(num1 + 1 + "<br>");
			
	var str5 = "a12bc";
	var num2 = parseInt(str5);
	document.write(num2 + 1 + "<br>" + "<br>");
			
	// eval():将JS字符串转换为脚本代码来执行
	var jscode = "document.write('hello world')";
	document.write(jscode + "<br>");
	eval(jscode);
</script>

结果:

BOM

1、概念

Browser Object Model 浏览器对象模型。将浏览器的各个组成部分封装成对象。

2、组成

(1)Window:窗口对象

①特点:

Window对象不需要创建可以直接使用(window)。例如:window.alter();

window也可以省略。例如:alter();

②方法:

* 与弹出框有关的方法:

alter():显示带有一段消息和一个确认按钮的警告框。

comfirm():显示带有一段消息以及确认按钮和取消按钮的对话框。如果用户点击确认按钮,返回true,否则返回false。

prompt():显示可提示用户输入的对话框。返回值:获取用户输入的值。

* 与打开关闭有关的方法:

open():打开一个新的浏览器窗口,返回新的Window对象。

close():关闭浏览器窗口,谁调用关谁。

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Window</title>
</head>
<body>
	<input id="openBtn" type="button" value="打开窗口">
	<input id="closeBtn" type="button" value="关闭窗口">
	
	<script>
		//打开窗口
		var openBtn = document.getElementById("openBtn");
		var newWindow;
		openBtn.onclick = function() {
			newWindow = open("https://www.baidu.com");
		}
		//关闭窗口
		var closeBtn = document.getElementById("closeBtn");
		closeBtn.onclick = function() {
			//要想关新打开的窗口,必须用新窗口的对象调用close()
			newWindow.close();
		}
	</script>
</body>
</html>

* 与定时器有关的方法:

setTimeout():在指定的毫秒数后调用函数或计算表达式。参数:JS代码或者方法对象,毫秒值。返回值:唯一标识,用于取消定时器。

clearTimeout():取消由setTimeout()方法设置的timeout。

setInterval():按照指定的周期(毫秒)来调用函数或计算表达式。参数和返回值与setTimeout一样。

clearInterval():取消由setInterval()设置的timeout。

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Window</title>
</head>
<body>
	<script>
		var id1 = setTimeout(fun,2000);
		clearTimeout(id1);
		
		var id2 = setInterval(fun,2000);
		clearInterval(id2);
		
		function fun() {
			alert('boom!');
		}
	</script>
</body>
</html>

例子:轮播图

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>轮播图</title>
</head>
<body>
	<!-- 图片是爱情公寓最有种的男人 -->
	<img id="img" src="../img/zw1.jpg" width="80%">
	
	<script>
		var num = 1;
		function fun() {
			num++;
			if(num > 4) {
				num = 1;
			}
			var img = document.getElementById("img");
			img.src = "../img/zw" + num + ".jpg";
		}
		
		setInterval(fun,2000);
	</script>
</body>
</html>

③属性:

* 获取其他BOM对象:history,location,navigator,screen

* 获取DOM对象:document

(2)Location:地址栏对象

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Location</title>
</head>
<body>
	<input id="btn" type="button" value="刷新">
	<input id="bd" type="button" value="百度">
	
	<script>
		var btn = document.getElementById("btn");
		btn.onclick = function() {
			// 重新加载
			location.reload();
		}
		
		var bd = document.getElementById("bd");
		bd.onclick = function() {
			// 改变URL
			location.href = "https://www.baidu.com";
		}
	</script>
</body>
</html>

(3)History:历史记录对象

(4)Navigator:浏览器对象

(5)Screen:显示器屏幕对象

案例:自动跳转到首页

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>案例</title>
	<style type="text/css">
		p {
			text-align: center;
		}
		span {
			color: red;
		}
	</style>
</head>
<body>
	<p>
		<span id="time">5</span>秒之后,自动跳转到首页...
	</p>
	
	<script>
		var second = 5;
		var time = document.getElementById("time");
		function showTime() {
			second--;
			if(second <= 0) {
				location.href = "https://www.baidu.com";
			}
			time.innerHTML = second + "";
		}
		
		setInterval(showTime,1000);
	</script>
</body>
</html>

 

DOM

1、概念

Document Object Model 文档对象模型。将标记语言文档的各个组成部分,封装为对象,可以使用这些对象,对标记语言文档进行动态操作。

 2、Document:文档对象

* 方法

①getElementById():根据id属性值获取元素对象,id属性值一般唯一。

②getElementsByTagName():根据元素名称获取元素对象,返回值是一个数组。

③getElementsByName():根据name属性值获取元素对象,返回值是一个数组。

④getElementsByClassName():根据class属性值获取元素对象,返回值是一个数组。

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>title</title>
	<style>
		#p1 {
			color: red;
		}
		
		.cls {
			color: green;
		}
	</style>
</head>
<body>
	<p id="p1">aaa</p>
	
	<div>div1</div>
	<div>div2</div>
	<div>div3</div>
	
	<input type="button" value="苹果" name="phone"><br>
	<input type="button" value="OPPO" name="phone"><br>
	<input type="button" value="Huawei" name="phone"><br>
	
	<div class="cls">div4</div>
	<div class="cls">div5</div>
	<div class="cls">div6</div>
	
	<script>
		// getElementById()
		var p1 = document.getElementById("p1");
		document.write(p1 + "<br>");
		
		// getElementsByTagName()
		var divs = document.getElementsByTagName("div");
		document.write(divs.length + "<br>");
		document.write(divs[0] + "<br>");
		document.write(divs.item(1) + "<br>");
		
		// getElementsByName()
		var btns = document.getElementsByName("phone");
		document.write(btns[0].value + "<br>");
		document.write(btns.item(1).value + "<br>");
		
		// getElementsByClassName()
		var ds = document.getElementsByClassName("cls");
		document.write(ds[0] + "<br>");
		document.write(ds.item(1) + "<br>");
	</script>
</body>
</html>

结果:

3、Element:元素对象

1、通过document来获取和创建。

2、方法

①removeAttribute():删除属性

②setAttribute():设置属性

4、Node:节点对象

(1)方法

①appendChild():向节点的子节点列表的结尾添加新的子节点。

②removeChild():删除(并返回)当前节点的子节点。

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>title</title>
	<style>
		div {
			border: red solid 2px;
		}
		
		#div1 {
			width: 200px;
			height: 200px;
		}
		
		#div2, #div3 {
			width: 100px;
			height: 100px;
		}
	</style>
</head>
<body>
	<div id="div1">
		<div id="div2">
			div2
		</div>
		div1
	</div>
	<input type="button" id="del" value="删除子节点">
	<input type="button" id="add" value="添加子节点">
	
	<script>
		// 实现删除子节点
		var del = document.getElementById("del");
		del.onclick = function() {
			var div1 = document.getElementById("div1");
			var div2 = document.getElementById("div2");
			div1.removeChild(div2);
		}
		
		// 实现增加子节点
		var add = document.getElementById("add");
		add.onclick = function() {
			var div1 = document.getElementById("div1");
			var div3 = document.createElement("div");
			div3.setAttribute("id","div3");
			div1.appendChild(div3);
		}
	</script>
</body>
</html>

(2)属性

parentNode:返回节点的父节点。

var div2 = document.getElementById("div2");
var div1 = div2.parentNode;
document.write(div1);

 

事件

1、常见的事件

①点击事件:

* onclick:单击事件

* ondbclick:双击事件

②焦点事件:

* onblur:失去焦点

* onfocus:获得焦点

③加载事件:

* onload:一张页面或一幅图像完成加载

④鼠标事件:

* onmousedown:鼠标按钮被按下

* onmouseup:鼠标按键被松开

* onmousemove:鼠标被移动

* onmouseover:鼠标移到某元素之上

* onmouseout:鼠标从某元素移开

⑤键盘事件:

* onkeydown:某个键盘按键被按下

* onkeyup:某个键盘按键被松开

* onkeypress:某个键盘按键被按下并松开

⑥选中和改变:

* onchange:域的内容被改变

* onselect:文本被选中

⑦表单事件:

* onsubmit:确认按钮被点击

2、绑定事件的两种方式:

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>title</title>
</head>
<body>
	<img id="light1" src="../img/off.png" onclick="fun1()">
	<img id="light2" src="../img/off.png">
	
	<script>
		function fun1() {
			alert("我被点了");
		}
		
		function fun2() {
			alert("我又被点了");
		}
		var light2 = document.getElementById("light2");
		light2.onclick = fun2;
	</script>
</body>
</html>

简单案例

电灯开关:点一下图片,灯泡换一种状态。

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>title</title>
</head>
<body>
	<img id="light" src="../img/off.png">
	
	<script>
		var light = document.getElementById("light");
		var flag = false;
		light.onclick = function() {
			if(flag) {
				light.src = "../img/off.png";
				flag = false;
			} else {
				light.src = "../img/on.png";
				flag = true;
			}
		}
	</script>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值