了解JavaScript

JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。
动态脚本语言,用于为html页面增加动态功能!

总结一下 : js是动态脚本语言,用于为HTML页面添加动态功能.
js的组成部分:
	ECMAScript : 基本语法
	DOM (文档对象模型) : 对html文档进行增删改查
	BOM (浏览器对象模型) : 用于操作浏览器中的相关对象
JS的引入方式
内部引入:
	1.在 head 标签中使用 script 标签,在 script 标签中写js代码
	2.在 body 标签的最下面写 script 标签,在 script 标签中写js代码
	3.在 body 标签同级以下写 script 标签,在 script 标签中写js代码
外部引入:
	在内部引入的三个位置的 script 标签中添加 src 属性,链接 .js 文件.
	在 js 文件中写js代码.
注意 : 用作外部引入的 script 标签不能再写js代码
	//外部引入
	<script type="text/javascript" src="">
		
	</script>
	
	//内部引入
	<script type="text/javascript">
	
	</script>
JS如何声明变量?
命名规则 : 
	由字母,数字,_,$组成
	不能以数字开头
	小驼峰命名法
	可以重复命名,后面的后覆盖前面的变量名
变量生命的关键字有 var 和 let .常用的为 var .
js的数据类型
String 字符串型
number 数值类型
boolean 布尔类型
undefined 未定义类型
object 对象类型
function 函数类型
null 空类型
运算符
赋值运算符 = 
算数运算符 +  -  *  /  %  ++  --  
关系运算符 >  <  >=  <=  ==  != === !== 
	== : 只要值一致就为true
	=== : 值和类型都要一致才为true
逻辑运算符 
	&& 逻辑与  
	|| 逻辑或
	! 取反
三目运算符 ? :
JS的程序结构
js中的程序结构和java基本相同:顺序结构/分支结构/循环结构,只有增强否循环和java中不同:
for(var i in arr){
}
continue; 跳过本次循环
break; 跳出本层循环
js中的常用方法

一些方法 :

输出语句 :  console.log(); 
查看数据类型 : typeof(); 
alert("这个是弹窗内容");
获取页面中的标签:
	document.querySelectorAll("选择器"); 返回的是一个集合.
	document.querySelector("选择器"); 返回的是单个元素.
获取标签中的内容:
	(一)表单元素获取内容的方法
	.value;
	(二)普通标签获取内容的方法
	.innerText;内置文本,只能解析文本
	.innerHTML;内置html结构(包含文本,而且还可以解析标签)
js中生成随机数:
通用公式:
	[26 , 65]
	var i = parseInt(Math.random()*(65 - 26 +1))+26

字符串相关方法 :

字符串相关的方法与java中的方法大多相同.
var str1 = "你好羊肉串";
var str2 = "多少钱一串";
str1 = str1.concat(str2);      //拼接字符串 和 + 一样
var len = str1.length;         //返回字符串的长度
console.log(len);              //打印长度,在控制台中显示
str1 = str1.trim();            //去除字符串左右的空格
str1 = str1.trimLeft();        //去除字符串左边的空格
str1 = str1.trimRight();       //去除字符串右边的空格
var arr = str1.split(",");     //以","分割字符串,返回一个数组
var num =  str1.indexOf("钱");  //钱 这个字符在字符串中出现的第一次时的下表(从左往右找)

数组相关:

var arr1 = ["哈哈",1,2,3,4,5];    //创建数组
var arr2 = new Array(); 	     //创建数组不添加元素
var arr3 =  new Array(5);  		 //创建一个容量为5的数组.
arr2.push(0);    				 //在最后面添加元素
arr2.push(1);
arr2.push(2);
arr2.unshift(11);                //在最前面添加元素
arr2.pop();						 //删除最后面的元素
arr2.shift();                       //删除最前面的元素
arr1.splice(0,2); 			     //删除元素(从指定下标开始, 删除指定个数)
数组的遍历:
1.普通for循环可以遍历数组
2.增强for循环和java中不同:
for(var i in arr2){
	console.log(arr2[i]);
}
事件
鼠标事件
	单击事件 onclick
	双击事件  ondblclick
	移入/移出事件  onmouseover/onmouseout
	移动事件  onmousemove
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			#d1{
				width: 100%;
				height: 1000px;
				background-color: red;
			}
		</style>
	</head>
	<body>
		<div id="d1"></div>
	</body>
	<script type="text/javascript">
		var div = document.querySelector("#d1");
		function randomNum(min,max){
			return parseInt(Math.random()*(max-min+1))+min;
		}
		//单击事件
//		div.onclick = function(){
//			div.style.backgroundColor = "rgb("+ randomNum(0,255)+
//   ","+randomNum(0,255)+","+randomNum(0,255)+")";
//		}
		//双加事件
		div.ondblclick = function(){
			div.style.backgroundColor = "rgb("+ randomNum(0,255)+
			","+randomNum(0,255)+","+randomNum(0,255)+")";
		}
		//移入移出事件
		div.onmouseout = function(){
			div.style.backgroundColor = "rgb("+ randomNum(0,255)+
			","+randomNum(0,255)+","+randomNum(0,255)+")";
		}
		div.onmouseenter = function(){
			div.style.backgroundColor = "rgb("+ randomNum(0,255)+
			","+randomNum(0,255)+","+randomNum(0,255)+")";
		}
		//移动事件
		div.onmousemove = function(){
			div.style.backgroundColor = "rgb("+ randomNum(0,255)+
			","+randomNum(0,255)+","+randomNum(0,255)+")";
		}
	</script>
</html>

表单事件
	聚焦事件 onfocus
		光标点击文本框那一刻叫做聚焦
	失焦事件 onblur
		光标从文本框中离开的那一刻叫失焦
	值改变 onchange
		最长用来做省市联动,在省份下拉选择框值改变的时候,为市区赋值
	提交  用普通按钮实现提交事件 form.submit();
		btn.onclick = function(){
			var form = querySelector("form");
			form.submit();
		}
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<form action="" method="get">
			<input type="text" name="username" placeholder="请输入用户名,6~15位" />
			<span id="userInfo"></span><br />
			<input type="text" name="phone" placeholder="请输入电话号码" />
			<span id="phoneInfo"></span><br />
			<input type="password" name="pwd" placeholder="请输入密码" />
			<span id="pwdInfo"></span><br />
			<input type="password" name="cpwd" placeholder="请再次输入密码" />
			<span id="cpwdInfo"></span><br />
			<input type="button" value="提交表单数据" id="btn" />
		</form>
	</body>
	<script type="text/javascript">
		
		//封装一个错误、正确的方法
		function mistake(ele, info) {
			ele.innerText = info;
			ele.style.color = "red";
		}
		
		function correct(ele, info) {
			ele.innerText = info;
			ele.style.color = "green";
		}
		//定义四个布尔值,来保存校验是否成功
		var isUserSucc = false, isPhoneSucc = false, isPwdSucc = false, isCpwdSucc = false;
		//用户名的非空及长度校验
		var userInput = document.getElementsByName("username")[0];
		var userInfo = document.getElementById("userInfo");
		userInput.onblur = function() {
			//拿到输入框中的值
			var username = this.value;
			if (username == null || username == "") {
				mistake(userInfo, "用户名不能为空");
			} else if (username.length < 6 || username.length > 15) {
				mistake(userInfo, "用户名长度为6~15");
			} else {
				correct(userInfo, "用户名OK");
				isUserSucc = true;
			}
		}
		
		//电话号码的非空、正则校验
		var phoneInput = document.getElementsByName("phone")[0];
		var phoneInfo = document.getElementById("phoneInfo");
		phoneInput.onblur = function() {
			//拿到输入框中的值
			var phone = this.value;
			if (phone == null || phone == "") {
				mistake(phoneInfo, "电话号码不能为空");
			} else if (!(/^1[3456789]\d{9}$/.test(phone))) {
				mistake(phoneInfo, "手机号码格式不正确");
			} else {
				correct(phoneInfo, "手机号码OK");
				isPhoneSucc = true;
			}
		}
		
		//密码的非空校验
		var pwdInput = document.getElementsByName("pwd")[0];
		var pwdInfo = document.getElementById("pwdInfo");
		pwdInput.onblur = function() {
			//拿到输入框中的值
			var pwd = this.value;
			if (pwd == null || pwd == "") {
				mistake(pwdInfo, "密码不能为空");
			} else {
				correct(pwdInfo, "密码OK");
				isPwdSucc = true;
			}
		}
		
		//确认密码的非空、一致校验
		var cpwdInput = document.getElementsByName("cpwd")[0];
		var cpwdInfo = document.getElementById("cpwdInfo");
		cpwdInput.onblur = function() {
			//拿到输入框中的值
			var pwd = pwdInput.value;//密码
			var cpwd = this.value;//确认密码
			if (cpwd == null || cpwd == "") {
				mistake(cpwdInfo, "密码不能为空");
			} else if (pwd != cpwd) {
				mistake(cpwdInfo, "两次密码不一致");
			} else {
				correct(cpwdInfo, "密码OK");
				isCpwdSucc = true;
			}
		}
		
		//获取提交按钮
		var btn = document.getElementById("btn");
		btn.onclick = function() {
			//所有校验通过之后,提交表单,只要有一个不满足校验,就提示错误
			if (isUserSucc && isPhoneSucc && isPwdSucc && isCpwdSucc) {
				var form = document.getElementsByTagName("form")[0];
				form.submit();
			} else {
				alert("校验还未通过,请先输入正确的信息");
			}
		}
	</script>
</html>

键盘事件(了解),主要用来做游戏的,比如说贪吃蛇,炸弹超人
	按下  onkeydown
	抬起  onkeyup
	长按  onkeypress
BOM的常用对象
window  浏览器窗口对象
文档加载顺序的问题可以用window.load来解决:
window.load = function(){
}
location对象可以获取主机地址,端口,协议,URL主体等内容:
location.hostname 
location.port 
location.protocol
location.pathname
history.back()在执行时,相当于点击了浏览器窗口的回退按钮!

单次定时器 settimeout

settimeout(function(){alert("两秒后执行")},2000)

循环定时器setInterval

setInterval(function(alert("两秒后执行")){},2000)
DOM基本操作

增(创建标签、添加标签)

createElement("标签名");

A.remove();    删除A
B.remove(A);  把A从B中删除

QuerySlectorall("选择器");
QuerySlector("选择器");
getElementById();  通过id获取标签
getElementByClassName();  通过类名获取标签
getElementByTagName();  通过标签名获取标签
getElementByName();  通过表单标签的name属性值获取表单标签

修改标签内容:
	普通标签.innerHTML
	普通标签.innerText
	表单标签.value
修改标签样式
	标签名.style.css样式名 = " ";
修改行间属性值
	标签名.行间属性=" ";
	标签.setAttribute(“行间属性名”, “行间属性值”);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值