JavaScript基础学习笔记

JavaScript基础学习笔记

1. javascript的两种引入方式

方式一:内嵌式

		<script type="text/javascript">
			alert("今天天气真好")
		</script>

方式二:引入式

		<!-- 	src引入路径,charset设置字符集 -->
		<script type="text/javascript" src="js/hjs01.js" charset="UTF-8">
		</script>

两种方式不可以混合使用


2. javascript变量的使用
变量的声明:
var 变量名 =  初始值;
变量的使用:
  • js中的变量名是可以重复的,但是重复的变量名值会覆盖
  • js中的变量是区分大小写
  • js中的变量是区分大小写
  • js中的双引号和单引号表示的含义是一样的,都代表字符串
数据的类型
  • number(数字类型)
  • string(字符串类型)
  • boolean(布尔类型)
  • object(对象类型)
特殊的数据类型
  • undefined(未定义的) 原因:只是声明了变量,没有赋值
  • NaN(not a number )不是一个数字 原因:把一个字符串(例如:123a)强转为数字类型造成
  • null :对象赋值为空
		<script type="text/javascript">
			var a=1; //number
			var b=1.2;//number
			var c='hjs';//string
			var d="胡俊升";//string
			var e=new Date();//object
			var f=true;//boolean
			var g = Number(d);//NaN Not a Number
			var h;//undefined
			var i=null;//null 类型:
			alert(typeof i);
		</script>

3.javaScript中的运算符
算数运算符
 \+ - * / % ++ -- 三木运算
逻辑运算符
 \+ - * / % ++ -- 三木运算
连接运算符
+
特殊运算符
==(等值符):比较的时候先比较类型,类型一致比较内筒,类型不一致统一的转化成number,然后在比较内容
===(等同符):比较的时候先比较类型,类型不一致直接返回false,类型一致在比较内用,内用一致返回true,不一致返回false

案例:

	<script type="text/javascript">
			var a = 12;
			var b;
			b=10;
			var c = true;
			var d="js"
			alert(a+b);
			alert(d+c);
			alert(c+d);
			alert(a+c);//13
			var s1  = 1;
			var s2  = "1";
			var s3 = true;
			var s4 = "true";
			alert(s1 == s2); //true
			alert(s1 == s3); //true
			alert(s1 == s4); //false
			alert(s2 == s3);  //true
			alert(s2 == s4); //false
			alert(s3 == s4);  //false
			alert(s1 === s2); //true
			alert(s1 === s3); //true
			alert(s1 === s4); //false
			alert(s2 === s3);  //true
			alert(s2 === s4); //false
			alert(s3 === s4);  //false
		</script>

4.javaScript控制语句
判断语句
语法:
if(){}
if(){}else{}
if(){}else if(){}else{}
<script type="text/javascript">
			var a = 10;
			if(a>10){
				alter("进来了");
			}else{
				alert("没进来");
			}
		</script>
当if(a),a的值是false,0,null,undefined,NaN时,执行else
循环语句
while(){}
do{}while(){}
for()
<script type="text/javascript">
	  //for循环执行九九乘法表
			for(var i=1;i<=9;i++){
				for(var j=1;j<=i;j++){
					document.write(i+"*"+j+"="+i*j+"&nbsp;&nbsp;&nbsp;");
				}
				document.write("<br />");
			}
	</script>
注意:js中for循环中的变量不是局部的变量是全局的, 在js中for循环不是一个函数

5.JavaScript函数的使用
javascript函数的三种声明方式
<script type="text/javascript">
			//方式一:
			function demo1(){
				alert("函数定义1");
			}
			demo1();
  
			//方式二
			var demo2 =  function(){
				alert("函数定义2");
			}
			demo2();
  
			//方式三
			var demo3 = new Function("alert('函数定义3')");
			demo3();
		</script>
js中函数本身也是一个对象
函数中参数的传递
js中形参的个数和实参的个数可以不一致
js中没有方法的重载 ,重名的方法只会覆盖
		<script type="text/javascript">
			function demo1(a,b,c){
				alert(a+"---"+b+"---"+c);
			}
			
			function demo1(a,b){
				alert(a+"---"+b)
			}
			demo1(1,2,3);//1---2
			demo1(1);//1---undefined
			
		</script>
函数的返回值
没有定义方法的返回值默认返回 undefined
		<script type="text/javascript">
			function demo(){
				alert("测试函数的返回值方法");
				return 1;
			}
			var a = demo();
			alert(a);//若没有返回值:undefined
		</script>
函数的执行符
<script type="text/javascript">
			function demo(yy){
				alert(yy);
				/*
				 * 输出结果
				 function(){
					alert("hjs")
					}
				 */
				
				alert(yy());//hjs undefined 
				}
			var a = function(){
				alert("hjs")
			}
			demo(a);
		</script>
():函数的执行符,若输出方法名不带执行符则输出的是函数的整个声明和函数体

6.JavaScript的数组的使用
数组的声明
<script type="text/javascript">
			var arr1 = new Array();
			var arr2 = new Array(5);
			var arr3 = new Array(1,1.2,true,'张三',new Date());
			var arr4 = [1,1.2,false,'hjs',new Date()];
	</script>

数组的使用
js中数组的下标可以是不连续的,如果不连续默认补充empty()
<script type="text/javascript">
			function demo(){
				var arr = [];
				arr[0] = "1";
				arr[1] = true;
				arr[2] = new Date();
				arr[6] = 11;
				console.log(arr);
			}
			demo();
		</script>
数组的扩容与缩小
只需要修改数组的length即可,扩容自动补空,缩小自动裁剪
<script type="text/javascript">
			function demo() {
				var arr = [1, 1.2, false, 'hjs'];
				console.log("前:" + arr);
				arr.length = 10;
				console.log("扩容后:" + arr);
				arr.length = 2;
				console.log("缩小后:" + arr)
			}
			demo();
		</script>
数组的遍历
<script type="text/javascript">
			function demo(){
				var arr = [1,1.2,false,new Date(),'张三'];
				for(var i=0;i<arr.length;i++){
					console.log(arr[i]);
				}
			}
			function demo(){
				var arr = [1,1.2,false,new Date(),'张三'];
				for(var i in arr){
					//console.log(i); 输出的是下标
					console.log(arr[i]);
				}
			}
			demo();
		</script>

注意:增强for循环的i代表的是下标不是具体的数组中的元素
数组中常用的方法
  • pop():删除数组的最后一个元素,并返回该元素。

  • push():将新元素添加到数组的末尾,并返回新的长度。

  • shift():删除数组的第一个元素,并返回该元素。

  • unshift():将新元素添加到数组的开头,并返回新的长度。

  • splice()从数组中添加/删除元素。

<script type="text/javascript">
			var arr = [1,1.2,true,new Date()];
			console.log("前:"+arr);
			//删除最后一个元素并返回这个元素pop
			var a = arr.pop();
			console.log(a);
			console.log("pop后:"+arr);
			//将新元素添加到末尾,并返回新的长度
			var a = arr.push("张三");
			console.log(a)
			console.log("push后"+arr);
  		arr.splice(2,1,'hjs','ywj');
			console.log("splice后"+arr);
		</script>

7.javascript的常用对象
Date对象:
		<script type="text/javascript">
			var date = new Date();
			console.log(date.getYear());//121
			console.log(date.getFullYear());//得到具体的年
			console.log(date.getMonth());//11 0-11
			console.log(date.getDay());//周六 星期几
			console.log(date.getDate());//具体的几号
			console.log(date.getHours());
			console.log(date.getMinutes());
			console.log(date.getSeconds());
		</script>
数学对象
<script type="text/javascript">
			function demo(){
				//获取一个0-1的随机整数
				console.log(Math.random());
				//向上取整
				console.log(Math.ceil(4.1));
				//向下取整
				console.log(Math.floor(5.9));
				//四舍五入
				console.log(Math.round(3.5));
				//获取一个四位数的随机整数
				console.log(Math.floor(Math.random()*9000+1000));
			}
			demo();
		</script>
字符串对象
<script type="text/javascript">
			function demo(){
				var str = "星-期-六";
				//"期-六 从下标为2的字符串输出"
				console.log(str.substr(2));
				//"期-六 substr(index,size)"
				console.log(str.substr(2,3));
				//"期-六 从下标为2的字符串输出"
				console.log(str.substring(2));
				//期 str.substring(startindex,endindex)
				console.log(str.substring(2,3));
				//字符串分割 --返回值是一个数组
				console.log(str.split('-'));
			}
			demo();
		</script>
Global全局对象
  • eval():计算javascript字符串,并把他作为脚本来执行

  • Number():把对象的值转换为数字

  • isNaN():检查某个值是否为数字

<script type="text/javascript">
			function demo(){
				var str = "alert(1+2)";
				//*把字符串转换成可以执行的js代码
				eval(str);//执行alert(1+2)
				var str = "123";
				//检查某个值是否是数字。
				alert(isNaN(str));
				alert(Number(str));
			}
			demo();
		</script>

8.Javascript中event事件

      事件:时间是可以被javascript侦测到的行为,也是满足某些条件就可以触发的指定函数

常用事件:
  • onclick:单击时间
  • ondblclick:双击事件
  • onmouseover:鼠标进入触发事件
  • Onmouseout:鼠标移出触发事件
  • Onmousemove:鼠标移动时间
  • Onblur:失去焦点触发事件
  • Onfocus:得到焦点触发事件
  • onchange:内容改变触发事件
  • onload:页面加载完成触发事件
		<script type="text/javascript">
			function demo1(){
				console.log("demo1");
			}
			function demo2(){
				console.log("demo2");
			}
			function demo3(){
				console.log("demo3");
			}
			function demo4(){
				alert("内容已经加载");
			}
		</script>	
		<body onload="demo4()">
		<button onclick="demo1()">单击事件</button>
		<button ondblclick="demo2()">双击事件</button>
		<input type="text" onkeydown="demo1()" onkeyup="demo2()"/>
		<div style="background: aqua;width: 300px; height: 200px;"onmouseover="demo1()" onmouseout="demo2()" onmousemove="demo3()">
		</div>
		<input type ="text" onblur="demo1()" onfocus="demo2()" />
		<select onchange="demo1()">
			<option>---请选择---</option>
			<option>北京</option>
			<option>天津</option>
			<option>上海</option>
			<option>南京</option>
		</select>
	</body>
事件结合对象的使用:
onclick,ondblclick一般都会结合按钮使
onkeydown,onkeyup,onblur,onfocus一般结合文本框使用
但是onblur,onfocus绝对不会结合按钮使用
onmouseover,onmouseout:一般结合div等块元素
onchange:结合下拉框和文本框使用

9.JavaScript中的BOM对象
什么是BOM
  • BOM是Browser Object Model的简写,即浏览器对象模型。

  • BOM由一系列对象组成,是访问、控制、修改浏览器的属性的方法

  • BOM没有统一的标准(每种客户端都可以自定标准)。

  • BOM的顶层是window对象

window对象的三种弹框方式
<script type="text/javascript">
			function demo1(){
				//方式一:只有确定按钮的弹框
				window.alert("你好!");
				//方式二:显示带有一段消息以及确认按钮和取消按钮的对话框。
				var a = window.confirm("是否删除");
				window.alert(a);
				//方式三:显示可提示用户输入的对话框。
				var a = window.prompt("请输入昵称:","例如:张三");
				window.alert(a);
			}
		</script>
BOM中的定时器
setInterval:每间隔一段时间执行一次-调用多次
setTimeout:过指定的时间调用方法-执行一次
		<script type="text/javascript">
			function demo2(){
				var date = new Date();
				var time = date.toLocaleString();
				document.getElementById("lsp").innerHTML = time;
			}
      //每间隔指定时间执行一次
			window.setInterval("demo2()",1000);
      //指定时间后执行一次
			window.setTimeout("demo2()",2000);
      function stopTime(){
				//清除定时器
				window.clearInterval(t);
			}
		</script>
BOM的close和open方法
		<script type="text/javascript">		
			function openWindow(){
				window.open("http://www.bjsxt.com");
			}
			function closeWindow(){
				window.close();
			}
		</script>
BOM的Location对象
<script type="text/javascript">
			function demo1() {
				//host:设置或返回主机名和当前 URL 的端口号。127.0.0.1:8020
				console.log(window.location.host);
				//hostname:设置或返回当前 URL 的主机名。127.0.0.1
				console.log(window.location.hostname);
				//port:设置或返回当前 URL 的端口号。8020
				console.log(window.location.port);
				//protocol:设置或返回当前 URL 的协议。http:
				console.log(window.location.protocol);
				//href:设置或返回完整的 URL。
				console.log(window.location.href);

				//跳转页面
				//在当前页面打开
				window.location.href = "http://www.bjsxt.com";//重点
				//在新页面打开
				window.open("http://www.baidu.com");
				//重新加载当前文档。
				window.location.reload();
			}
		</script>
BOM中的History对象
<script type="text/javascript">
			function demo1(){
				//url地址中历史记录的数量
				console.log(window.history.length);
				//url地址中历史记录的前一个
				window.history.back();
				//url地址中历史记录的后一个
				window.history.forward();
				//正数:后一个 负数:前一个  0
				window.history.go(1);
			}
		</script>
BOM中的Screen对象
<script type="text/javascript">
			function demo1(){
				var a =window.screen.height;
				var b = window.screen.width;
				console.log("高:"+a+",宽:"+b);
			}
		</script>
BOM中的Navigator
		<script type="text/javascript">
			function demo1(){
				//返回由客户机发送服务器的 user-agent 头部的值。
				console.log(window.navigator.userAgent);
			}
		</script>

10.JavaScript中的DOM对象
DOM直接获取元素对象
  • getElementById():通过ID名称获得节点元素对象-单个对象
  • getElementsByTagName():通过标签名称获取元素对象-多个对象
  • getElementsByClassName():通过class名称获取元素对象-多个对象
  • getElementsByName():通过name属性或得元素对象–多个对象,但是不是所有的标签都具有name属性获得元素对象,所以这种获得方式不是太多
<script type="text/javascript">
			function demo1() {
				//通过id名称获取元素对象
				var sp = document.getElementById("sp1");
				console.log(sp);
			}

			function demo2() {
				//通过标签名称获取元素对象
				var sps = document.getElementsByTagName("span");
				console.log(sps);
				console.log(sps[2]);
			}
			
			function demo3(){
				//通过类名获取元素对象
				var sps = document.getElementsByClassName("sp");
				console.log(sps);
			}
			
			function demo4(){
				//通过name属性获取元素对象
				var sps = document.getElementsByName("zs");
				console.log(sps);
			}
		</script>

DOM间接获取元素对象
  • childNodes:获取指定标签的所有子元素,text(空白)文本也是一个节点
  • parentNode:获取父节点
  • previousSibling:获取上一个元素,text
  • previousElementSibling:获取上一个元素标签
  • nextSibling:获取下一个元素text
  • nextElementSibling:获取下一个元素标签
<script type="text/javascript">
			function demo1(){
				//获取div对象
				var div1 = document.getElementById("div1");
				//获取div对象下面的所有的子标签(空白文本也属于节点)
				var ch = div1.childNodes;
				console.log(ch);
			}
			function demo2(){
				var sp = document.getElementById("sp1");
				//获取当前节点的父节点标签
				var p1 = sp.parentNode;
				console.log(p1);
			}
			function demo3(){
				var sp = document.getElementById("sp1");
				//获取当前标签的下一个标签(text)
				var n1 = sp.nextSibling;
				var n2 = sp.nextElementSibling;
				console.log(n2);
				var n3 = sp.previousElementSibling;
				console.log(n3);
			}
		</script>
DOM操作节点的属性

1.获取元素对象:var id = document.getElementById(id)

2.获取对象的属性:id.属性,然后就可以操作了

<script type="text/javascript">
			function demo1() {
				//获取元素对象
				var id1 = document.getElementById("text1");
				//输出元素属性
				console.log("type:" + id1.type);
				console.log("alt:" + id1.alt);
				console.log("value:" + id1.value);
				console.log("id:" + id1.id);
				id1.type="button";
				id1.value="我变成可以点的按钮了";				
			}
			function demo2(){
				alert("123");
			}
		</script>
DOM操作元素内容
  • 单标签获得值得时候使用value属性

  • 双标签获得时候使用的是innerHTML 或者innerText

  • 双标签的特殊情况(value)

    Select textare:取值的时候使用value属性

    ​ 赋值的时候使用innerHTML或者innerTest即可

<script type="text/javascript">
			function demo1(){
				var div1 = document.getElementById("div1");
				//获取元素的文本内容
				console.log(div1.innerText);
				//获取元素的HTML标签+文本
				console.log(div1.innerHTML);
//				div1.innerText = "<i>我们不一样</i>";
				div1.innerHTML = "<i>我们不一样</i>";
			}
		</script>
DOM操作元素样式
		<script type="text/javascript">
			function demo1(){
				//获取元素对象
				var c1 = document.getElementById("div1");
				//获取css样式
				//注意:在获取css样式的时候,这个css样式必须是行内式的方式才可以
				console.log(c1.style.width+"=="+c1.style.height+"=="+c1.style.backgroundColor);
				//操作css的样式方式一:
				//c1.style.width="300px";
				//c1.style.height="300px";	
				//c1.style.backgroundColor="darkmagenta";
				//操作css的样式方式二:通过增加class属性的方式操作css---如果这个css样式在多个地方重复使用
				c1.className="c1";
			}
小案例
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			#div1{
				padding: 30px;
				width:300px;
				height: 300px;
				background-color: aqua;
				margin: 100px auto;
			}
			button{
				display: inline-block;
				width: 70px;
				height: 30px;
				border-radius: 30px;
				margin-left: 60px;
				margin-top:70px ;
				background-color: aliceblue;
			}
		</style>
		<script type="text/javascript">
			function demo2(){
				var div1 = document.getElementById("div1");
				div1.style.marginLeft = Math.random()*1000+"px";
				div1.style.marginTop = Math.random()*500+"px";
				
			}
			function demo1(){
				document.getElementById("div1").style.display="none";
				document.body.style.backgroundImage="url(img/box.jpg)";
			}
		</script>
	</head>
	<body>
		<div id="div1">
			<h3 align="center">你是不是傻?</h3>
			<button onclick="demo1()"></button>
			<button onmouseover="demo2()">不是</button>
		</div>
	</body>
</html>

DOM操作元素节点

操作元素节点对象的方法:

  • 创建节点对象:

     var p=document.createElement("p");
    
  • 如何追加到指定节点对象中

      p.appendChild(inp);
      document.body.insertBefore(p,p1);	
    
  • 移除子节点:

     p.removeChild(inp);    
    
  • 直接移除该节点

      p.remove();
    

案例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			function insert(){
				//创建节点对象
				var p=document.createElement("p");
				p.innerHTML="照片:"
				//创建input标签对象	
				var inp=document.createElement("input");
				//给指定的对象赋予属性
				inp.type="file";
				var inp2=document.createElement("input");
				inp2.type="button";
				inp2.value="删除";
				//给指定的对象赋予事件
				inp2.onclick=function(){		
				//删除节点对象  移除子节点对象
				/*p.removeChild(inp);
				p.removeChild(inp2);	
				document.body.removeChild(p);*/				
				//直接删除p标签对象
				p.remove();					
				}
				//获得body对象
				//在现有元素之后追加节点对象
				/*document.body.appendChild(p);*/
				//获得p标签对象
				var p1=document.getElementById("p_1");
				//在现有元素对象之前增加新的节点对象
				document.body.insertBefore(p,p1);
				p.appendChild(inp);
				p.appendChild(inp2);
			}
		</script>
	</head>
	<body>	
		<p>
			姓名:<input type="" name="" id="" value="" />
		</p>
		<p>
			照片:<input type="file" name="" id="" value="" />
			<input type="button" name="" id="" value="添加" onclick="insert()"/>
		</p>
		<p id="p_1">
			<input type="button" name="" id="" value="提交" />
			<input type="button" name="" id="" value="清空" />
		</p>
		
	</body>
</html>

JavaScript 表单验证
  • readonly和disabled

      共同点:都是导致内容不可以更改
      区别:readonly:中的内容是可以提交的
      disabled:数据是不可以提交的,不可以在被操作
    
  • 表单的提交方式

	οnsubmit="return sub()"
	<input type="submit" name="" id="" value="提交" />

案例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			function checkName(){
				var userName = document.getElementById("uname");
				var sp = document.getElementById("uname_span");
				if(userName.value == null || userName.value==""){
					sp.innerText="× 用户名不能为空";
					sp.style.color="red";
					return false;
				}else{
					sp.innerText="√ 用户名合法";
					sp.style.color="green";
					return true;
				}
			}
			
			function checkPWD(){
				var pwd = document.getElementById("pwd");
				var pwdsp = document.getElementById("pwd_span");
				if(pwd.value == null || pwd.value==""){
					pwdsp.innerText = "× 密码不能为空";
					pwdsp.style.color="red";
					return false;
				}else{
					pwdsp.innerText="√ 密码合法";
					pwdsp.style.color="green";
					return true;
				}
			}
			
			function zong(){
			return checkName() && checkPWD();
				}
		</script>
	</head>
	<body>
		<!--如果方法返回值是true可以提交表单,如果是false表单就不提交-->
		<form action="操作节点元素对象.html" onsubmit=" return zong()">
			<p>
				用户名:
				<input type="text" onblur="checkName()" name="uname" id="uname" value=""/>
				<span id="uname_span">
					
				</span>
			</p>
			<p>
				密码:
				<input type="password" onblur="checkPWD()" name="pwd" id="pwd" value="" />
				<span id="pwd_span">
					
				</span>
			</p>
			<p>
				<input type="submit" value="登录" />
			</p>
		</form>

	</body>
</html>


案例:简易计算器

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>简易计算器</title>
		<style type="text/css">
			div {
				width: 110px;
				height: 132px;
				border: 1px solid black;
				padding: 5px;
				margin: 10px auto;
			}
			
			.text {
				width: 95px;
			}
		</style>
		<script type="text/javascript">
			function demo(th){
				//th就是当前点击的button对象
				var t1 = document.getElementById("text1");
				if(th.innerText=="C"){
					t1.value = "";
				}else if(th.innerText=="="){
					t1.value = eval(t1.value);
				}else{
					t1.value+=th.innerText;
				}
			}
		</script>
	</head>

	<body>
		<div>
			<input type="text" id="text1" class="text" />
			<table>
				<tr>
					<td><button onclick="demo(this)">7</button></td>
					<td><button onclick="demo(this)">8</button></td>
					<td><button onclick="demo(this)">9</button></td>
					<td><button onclick="demo(this)">/</button></td>
				</tr>
				<tr>
					<td><button onclick="demo(this)">4</button></td>
					<td><button onclick="demo(this)">5</button></td>
					<td><button onclick="demo(this)">6</button></td>
					<td><button onclick="demo(this)">*</button></td>
				</tr>
				<tr>
					<td><button onclick="demo(this)">1</button></td>
					<td><button onclick="demo(this)">2</button></td>
					<td><button onclick="demo(this)">3</button></td>
					<td><button onclick="demo(this)">-</button></td>
				</tr>
				<tr>
					<td><button onclick="demo(this)">0</button></td>
					<td><button onclick="demo(this)">C</button></td>
					<td><button onclick="demo(this)">+</button></td>
					<td><button onclick="demo(this)">=</button></td>
				</tr>
			</table>
		</div>
	</body>

</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值