欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2021年1月份学习总结——JS入门

程序员文章站 2022-06-30 19:12:12
...

JSON

JSON就是一个特殊格式的字符串,这个字符串可以被任意的语言所识别,并且可以转换成任意语言中的对象,JSON在开发中主要用来数据的交互。

JSON -javaScript object Notation
JSON和js对象的格式一样,只不过JSON字符串中的属性名必须加双引号,其他的和js语法一致。
JSON分类
1.对象 { }
2.数组 [ ]
JSON中允许的值:
1.字符串
2.数值
3.布尔值
4.null
5.对象
6.数组
将JSON字符串转换为JS对象,在JS中为提供一个工具类JSON,可以帮助我们将JS和JSON相互转换

JSON.parse();//将JSON字符串转换为对象
JSON.stringify();//将JS对象转换为JSON字符串

JSON在IE7及以下浏览器不支持,可以通过引入一个外部的JS文件来处理IE7以下浏览器的兼容性

eval();//可以用来执行一段字符串形式的JS代码,并将执行结果返回。

如果其中执行的字符串中含有{ },它将会将{}当成代码块,在字符串前后加()则不会当成代码块执行。在开发中尽量不要使用,具有安全隐患。

BOM浏览器对象模型

BOM对象:
window 代表整个浏览器的窗口
Screen 代表用户的屏幕的信息,可以获取用户的显示器的相关的信息
这些BOM对象在浏览器中都是作为window对象的属性保存的,也可以通过window对象来使用,也可以直接使用

Navigator

代表当前浏览器的信息,来识别不同的浏览器。由于历史原因,navigator对象中大部分属性都已经不能帮助我们识别浏览器了。
一般我们只会使用userAgent(包含有用来描述浏览器信息的内容的字符串)来判断浏览器的信息。在IE11中已经将微软和IE相关的标识都已经去除,基本不能通过userAgent来识别一个浏览器是否是IE。
可以通过ActiveXObject来判断IE浏览器的信息

var ua = navigator.userAgent;
			if(/firefox/i.test(ua)){
				alert("火狐");
			}else if(/chrome/i.test(ua)){
				alert("chrome");
			}else if(ActiveXObject in window){
				alert("IE浏览器")
			}

Location

代表当前浏览器的地址栏信息,通过该对象可以获取地址栏信息或者操作浏览器跳转页面。
直接打印则可以获取地址栏的信息(当前页面完整路径)
如果直接将location属性修改为一个完整的路径,或者相对路径。则我们页面会自动跳转到该路径,并且会生成相应的历史记录。
方法:

assign() 用来跳转到其他页面,作用和直接修改location一样
reload() 用于重新加载当前页面,如果在方法中传递一个true作为参数,则会强制清空缓存刷新页面
replace() 可以使用一个新的页面替换当前页面,调用完毕会跳转页面且不能回退

History

代表浏览器的历史记录,可以通过该对象来操作浏览器的历史记录。由于隐私原因,该对象不能获取到具体的历史记录,该操作只在当次访问有效。

length  可以获取当前访问的链接数量
back() 可以用来回退到上一个页面,作用和浏览器的回退按钮一样
forward() 可以跳转下一个页面,作用和浏览器的前进按钮一样
go()    可以用来跳转到指定的页面,需要一个整数作为参数
					1表示向前跳转一个页面
					-1表示向后跳转一个页面

键盘事件

键盘事件一般都会绑定给一些可以获取到焦点的对象。

onkeydown 按键被按下。如果一直按着某个事件不松手,则事件一直在触发。当onkeydown连续出发时,第一次和第二次之间间隔会较长,其他都较紧促,这种设计避免误操作。
onkeyup 按键被松开
事件对象中还提供了altKey、ctrlKey、shiftKey用来判断alt、ctrl、shift是否被按下。
可以通过keyCode来获取按键的编码,判断哪个键被按下:

if(event.keyCode==89){
	console.log("y按键按下");
}

定时调用

setInterval()定时调用
可以将一个函数,每隔一段时间执行一次
	参数:
		1.回调函数,该函数每隔一段时间被调用一次
		2.每次调用间隔的时间,单位是毫秒

返回值:返回一个number类型的数据,这个数字用来作为定时器的唯一标识

clearInterval()可以用来关闭一个定时器
 方法中需要一个定时器的标识作为参数,这样将关闭标识对应的定时器
   可以接受任意参数,如果不是一个有效的标识,则无效果
clearInterval(timer);

定时器应用-切换动画

function move(obj,attr,target,speed,callback){
					/* 参数:obj:要执行动画的对象
							attr:要执行动画的样式,eg:left top right 
							target:执行动画的目标位置
							speed:移动的速度(正数)
							callback:回调函数,将会在动画执行完毕以后执行*/
					/* 开启定时器之前取消上一个定时器*/
	clearInterval(obj.timer);
					// 获取元素目前的位置
	var current = parseInt(getStyle(obj,attr));
					// 判断speed的正负值
					/* 如果从0到800移动,speed为正值
						如果从800到0移动,speed为负值*/
	if(current>target){
		speed = -speed;
	}
					/* 开启定时器来执行动画效果 */
	obj.timer = setInterval(function(){
						//获取box1原来left值
	var oldValue = parseInt(getStyle(obj,attr));
						// 在旧值的基础上增加
	var newValue = oldValue +speed;
						// 将新值设置给box1
	obj.style[attr] = newValue +"px";
						// 停止执行动画
	if(speed<0 && newValue <target || speed >0 && newValue>target){
		newValue = target;
	}
	if(newValue == target){
		clearInterval(obj.timer);
		// 动画执行完毕,调用回调函数
		callback && callback();
	}
	},30);
};
			
function getStyle(obj,name){
	if(window.getComputedStyle){
					// 正常浏览器的方式,具有getComputedStyle()方法
	return getComputedStyle(obj,null)[name];	
	}else{
					// IE8的方式,没有该方法
		return obj.currentStyle[name];
	}
}

JS实例——轮播图

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			*{
				padding: 0;
				margin: 0;
			}
			/* 设置外部div */
			#outer{
				background-color: #00FFFF;
				width: 750px;
				height: 750px;
				margin: 20px auto;
				padding: 0px;
				/* 开启相对定位 */
				position: relative;
				overflow: hidden;
			}
			/* 设置ul */
			#imgList{
				/* 除去li符号 */
				list-style: none;
				/* width: 3600px; */
				/* 开启绝对定位 */
				position: absolute;
				/* 设置偏移量 */
				/* 没向左移动750px,切换到一张 */
			}
			/* 设置li */
			#imgList li{
				/* 设置浮动 */
				float: left;
				/* 设置左右外边距 */
				margin: 0 20px;
			}
			/* 设置导航按钮 */
			#navDiv{
				/* 开启定位 */
				position: absolute;
				/* 设置位置 */
				bottom: 10px;
				/* left: 250px; */
				
			}
			#navDiv a{
				float: left;
				width: 30px;
				height: 30px;
				background-color: #B22222;
				margin:0 10px;
				/* 设置透明 */
				opacity: 0.8;
				/* 兼容IE8透明 */
				filter: alpha(opacity = 50);
			}
			/* 设置鼠标移入的效果 */
			#navDiv a:hover{
				background-color: black;
			}
		</style>
		<script type="text/javascript" src="./tools.js"></script>
		<script type="text/javascript">
			window.onload = function(){
				/* 设置imgList的宽度 */
				// 获取imgList
				var imgList = document.getElementById("imgList");
				// 获取页面中所有的img标签
				var imgArr = document.getElementsByTagName("img");
				// 设置imgList的宽度
				imgList.style.width = 750*imgArr.length + "px";
			/* 设置导航按钮居中 */
			// 获取navDiv
			var navDiv = document.getElementById("navDiv");
			// 获取outer
			var outer = document.getElementById("outer");
			// 设置navDiv的left值
			navDiv.style.left = (outer.offsetWidth-navDiv.offsetWidth)/2 +"px";
			/*  */
			// 默认显示图片的索引
			var index = 0;
			// 获取所有的a
			var allA = document.getElementsByTagName("a");
			// 设置默认选中的效果
			allA[index].style.backgroundColor ="black";
			/* 点击超链接切换到指定的图片 */
			// 为所有超链接绑定单击函数
			for (var i=0;i<allA.length;i++){
				// 为每个超链接添加一个num属性
				allA[i].num = i;
				allA[i].onclick = function(){
					// 关闭自动切换图片的定时器
					clearInterval(timer);
					// 获取点击超链接的索引
					index =this.num;
					// 切换图片
					// imgList.style.left = -740*index+"px";
					// 设置选中的a
					setA();
					move(imgList,"left",-730*index,50,function(){
						// 动画执行完毕开启自动切换
						autoChange();
					});
					
				};
			}
			// 自动切换图片
			autoChange();
			// 修改正在选中的a
			function setA(){
				// 判断当前索引是否式最后一张
				if(index >= imgArr.length-1){
					// 将index设置为0
					index = 0;
					// 将最后一张切换成第一张
					imgList.style.left = 0;
				}
				for(var i=0;i<allA.length;i++){
					allA[i].style.backgroundColor = "";
				}
				// 将选中的a设置为黑色
				allA[index].style.backgroundColor = "red";
			};
			
			var timer;
			// 创建一个函数用来开启自动开启切换图片
			function autoChange(){
				// 开启一个定时器,用来定时开启切换图片
				var timer = setInterval(function(){
					// 索引自增
					index++;
					// 判断index的值
					index %= imgArr.length;
					// 执行动画
					move(imgList,"left",-730*index,50,function(){
						// 修改导航按钮
						setA();
					});
				},3000);
			}
		};	
		</script>
	</head>
	<body>
		<!-- 创建外部的div作为容器 -->
		<div id="outer">
			<!-- 创建ul来放置图片 -->
			<ul id="imgList">
				<li><img src="img/1.jpg" ></li>
				<li><img src="img/2.jpg" ></li>
				<li><img src="img/3.jpg" ></li>
				<li><img src="img/4.jpg" ></li>
				<li><img src="img/5.jpg" ></li>
				<li><img src="img/1.jpg" ></li>
			</ul>
			<!-- 创建导航按钮 -->
			<div id="navDiv">
				<a href="javascript:;"></a>
				<a href="javascript:;"></a>
				<a href="javascript:;"></a>
				<a href="javascript:;"></a>
				<a href="javascript:;"></a>
			</div>
		</div>
	</body>
</html>
相关标签: javascript