JS学习第十八天总结

1.使用sort方法进行数组排序

<script type="text/javascript">
	var arr=[1,2,3,2,1,4,55,2,111,42,2];
	var newArr=arr.sort(function(a,b){
		return a-b;//升序排列,需要降序排列,返回b-a就行了
	});
	newArr.forEach(function(v,i){
		console.log(`下标${i}的值为${v}`);
	})
</script>

2.复习回顾

  • forEach——数组的方法,伪数组不能使用forEach,因为伪数组实际上是对象。
  • 事件冒泡
    • 什么是事件冒泡
    • 阻止事件冒泡
  • 简单的运动框架:offsetLeft+步长

3.ES6中的两种新的声明变量方式

  • var关键字的替换let、const
    • 使用let在同一个作用环境中重复声明同名变量,会报错;重新赋值是可以的。
    • const和let一样,不能重复声明变量,但是const不能重新赋值。也就是说,用const声明的变量是常量,不能重新进行赋值,永远不会改变。
    • let、const使JS有了块级作用域,就是说在{}中声明赋值的变量,在{}外面访问会出错。
    • 点击按钮,出现对应下标,三种解决办法。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<button>按钮1</button>
		<button>按钮2</button>
		<button>按钮3</button>
		<button>按钮4</button>
		<button>按钮5</button>
		<button>按钮6</button>
		<button>按钮7</button>
	</body>
	<script type="text/javascript">
		var btns=document.getElementsByTagName("button");
		//第一种实现办法
		for(var i=0;i<btns.length;i++){
			btns[i].index=i;
			btns[i].function(){
				alert(this.index+1);
			}
		}
		//第二种实现办法
		for(var i=0;i<btns.length;i++){
			(function(i){
				btns[i].function(){
					alert(i+1);
				}
			})(i)
		}
		//第三种实现办法
		for(let i=0;i<btns.length;i++){
			btns[i].function(){
				alert(i+1);
			}
		}		
	</script>
</html>

4.简单的运动框架

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			#box {
				height: 150px;
				width: 150px;
				background-color: yellow;
				position: absolute;
			}
		</style>
	</head>
	<body>
		<button id="btn1">点击运动到300</button>
		<button id="btn2">点击运动到600</button>
		<button id="btn3">回到原点</button>
		<div id="box"></div>
	</body>
	<script src="js/move.js"></script>
	<script type="text/javascript">
		const btn1 = $id("btn1");
		const btn2 = $id("btn2");
		const btn3 = $id("btn3");
		const box = $id("box");
		btn1.onclick = function() {
			animate(box, 300);
		}
		btn2.onclick = function() {
			animate(box, 600);
		}
		btn3.onclick = function() {
			animate(box, 0);
		}		
	</script>
</html>
//move.js文件
function $id(id) {
	return document.getElementById(id);
}
function animate(obj, target) {
	clearInterval(obj.timer);
	let buchang = target > obj.offsetLeft ? 5 : -5;
	obj.timer = setInterval(function() {
		obj.style.left = obj.offsetLeft + buchang + "px";
		if(Math.abs(target - obj.offsetLeft) <= Math.abs(buchang)) {
			clearInterval(obj.timer);
			obj.style.left = target + "px";
		}
	}, 30);
}

WebGI学习网站
邀请码 N8HTN8 来获得三个月的蓝灯专业版!立即下载

5.轮播图

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			*{
				margin:0;
				padding:0;
			}
			#box{
				width:590px;
				height:470px;
				border:5px solid #333;
				margin:100px auto;
				position: relative;
			}
			#content{
				width:590px;
				height:470px;
				overflow: hidden;
			}
			ul,ol{
				list-style: none;
			}
			ul{
				width:1000%;
				position: relative;
			}
			ul li{
				float:left;
			}
			ol{
				position: absolute;
				bottom:10px;
				right:20px;
			}
			ol li{
				width:50px;
				height:50px;
				background-color:white;
				margin-right: 5px;
				border-radius: 50%;
				float: left;
				text-align: center;
				line-height: 50px;
				font-size: 20px;
				cursor: pointer;
			}
			.bgc{
				background-color: deepskyblue;
			}
		</style>
	</head>
	<body>
		<div id="box">
			<div id="content">
				<ul>
					<li><img src="img/1.jpg" alt="1" /></li>
					<li><img src="img/2.jpg" alt="1" /></li>
					<li><img src="img/3.jpg" alt="1" /></li>
					<li><img src="img/4.jpg" alt="1" /></li>
				</ul>
			</div>
		</div>
	</body>
	<script src="js/common.js"></script>
	<script type="text/javascript">
		var box=$id("box");
		var uu=box.children[0].children[0];
		var img=document.querySelector("img");		
		var cOl=document.createElement("ol");
		box.appendChild(cOl);
		for(var i=0;i<uu.children.length;i++){
			var cLi=document.createElement("li");
			cLi.innerHTML=i+1;
			cOl.appendChild(cLi);
		}
		var lis=cOl.children;
		lis[0].className="bgc";
		for(var i=0;i<lis.length;i++){
			lis[i].index=i;
			lis[i].function(){
				for(var j=0;j<lis.length;j++){
					lis[j].className="";
				}
				this.className="bgc";
				animate(uu,-this.index*img.offsetWidth);
			}			
		}
		var timer=null;
		move();
		timer=setInterval(move,1000);
		function move(){			
			if(uu.offsetLeft==-(lis.length-1)*img.offsetWidth){
				animate(uu,0);
			}
			if(uu.offsetLeft==0){
				animate(uu,-(lis.length-1)*img.offsetWidth);
			}
			var circle=Math.round(Math.abs(-uu.offsetLeft/img.offsetWidth));
			for(var j=0;j<lis.length;j++){
				lis[j].className="";
			}
			lis[circle].className="bgc";						
		}
		box.function(){
			clearInterval(timer);			
		}
		box.function(){
			timer=setInterval(move,1000);
		}
	</script>
</html>
//common.js文件
function $id(id) {
	return document.getElementById(id)
}

//obj:运动对象 , target:运动目标位置
function animate(obj, target) {
	clearInterval(obj.timer)
	var buchang = obj.offsetLeft > target ? -5 : 5;
	obj.timer = setInterval(function() {
		var result = obj.offsetLeft - target;
		obj.style.left = obj.offsetLeft + buchang + "px";
		if(Math.abs(result) < Math.abs(buchang)) {
			clearInterval(obj.timer);
			obj.style.left = target + "px";
		}
	}, 20);
}

了解内容:轮播图插件、jQuery插件

6.取整函数

  • parseInt
  • 数学意义上的取整
    • Math.ceil; 进一法
    • Math.floor; 去尾法
    • Math.round; 四舍五入法
  • Math.abs(); 取绝对值
  • Math.sqrt(); 开根号
  • Math.pow(x,y); x的y次方
  • Math.random();

7.json的遍历

  • json中不合法属性名,用""包裹就不报错了;想要获取属性值时,使用[’’]包裹来获取。
  • [’’]也可以访问普通属性,但是比较麻烦,使用点更方便。
  • for(var key in json){console.log(json[key])}; for in语法,遍历json对象的。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
	</body>
	<script type="text/javascript">
		var json={
			width:200,
			height:300,
			color:"red",
			"background-color":"yellow"			
		}		
		for(var key in json){
			console.log(`json.${key}:${json[key]};`);
		}
	</script>
</html>

JavaScript 标准参考教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>