前端入门【JavaScript_I】

学习目标

-[ ] 了解什么是JavaScript【了解】

-[ ] 掌握JavaScript的基础语法【掌握】

-[ ] 掌握JavaScript中函数的定义两种方式【重点】
-[ ] 掌握JavaScript中常用的事件【重点】
-[ ] 掌握JavaScript中BOM对象的常用方法【熟悉】

一、JavaScript概述

1、JavaScript是什么?

JavaScript 是互联网上最流行的脚本语言,广泛用于客户端(浏览器),用来给HTML网页增加 动态效果

​ 图-TIOBE开发语言排行榜

在这里插入图片描述

2、JavaScript语言的特点?

特点说明
脚本语言不需要编译,被调用的时候才被解释
给网页增加动态功能
浏览器运行浏览器的JavaScript引擎负责解释JavaScript代码
“简单”数据类型,流程控制语句等与java很相似

3、JavaScript与Java的关系?

​ 在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为当时Netscape正在与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。

4、JavaScript的语法组成:

​ JavaScript语言由3部分组成,分别是:

组成部分说明
ECMAScriptJavaScript语言的基础语法
BOM Broswer Object Model浏览器窗口相关对象
DOM Document Object Modelhtml文档操作相关
  1. ECMAScript:JavaScript的基本语法;

​ 1995年Netscape公司发布的Netscape Navigator 2.0中,发布了与Sun联合开发的JavaScript 1.0并且大获成功, 并且随后的3.0版本中发布了JavaScript1.1,恰巧这时微软进军浏览器市场,IE 3.0搭载了一个JavaScript的克隆版-JScript, 再加上Cenvi的ScriptEase(也是一种客户端脚本语言),导致了三种不同版本的客户端脚本语言同时存在。为了建立语言的标准化,1997年JavaScript 1.1作为草案提交给欧洲计算机制造商协会(ECMA),第三十九技术委员会(TC39)被委派来“标准化一个通用的,跨平台的,中立于厂商的脚本语言的语法和语意标准”。最后在Netscape、Sun、微软、Borland等公司的参与下制订了ECMA-262,该标准定义了叫做ECMAScript的全新脚本语言。【ES6】

​ 从此以后的Javascript,JScript,ActionScript等脚本语言都是基于ECMAScript标准实现的。
​ 所以,ECMAScript实际上是一种脚本在语法和语义上的标准。实际上JavaScript是由ECMAScript,DOM和BOM三者组成的。 所以说,在JavaScript,JScript和ActionScript中声明变量,操作数组等语法完全一样,因为它们都是ECMAScript。但是在操作浏览器对象等方面又有各自独特的方法,这些都是各自语言的扩展。

  1. BOM:浏览器对象模型

​ Brower Object Model 浏览器对象模型,主要是获取浏览器信息或操作浏览器的,例如:浏览器的前进与后退、浏览器弹出提示框、浏览器地址栏输入网址跳转等操作等;

  1. DOM:文档对象模型

​ Document Object Model 文档(html文件内容)对象模型,此处的文档暂且理解为html,html加载到浏览器的内存中,可以使用js的DOM技术对内存中的html节点进行修改,用户从浏览器看到的是js动态修改后页面;

5、JavaScript与Html的结合方式【重点】

​ 在html文件中引入JavaScript有两种方式:内嵌式和外联式。

1.内嵌式:

​ 直接在HTML文件中,书写<script>标签,这个标签体中可以直接书写JS代码。如下:

<script type="text/javascript">
	//此处是JavaScript代码
</script>
2.外联式:

​ 在html文档中,通过<script src=""> 标签的src属性引入外部的js文件,如下:

<script src="index.js" type="text/javascript">
	//通过script标签的src属性引入外部的index.js文件
</script>

【注意】:

  1. 如果<script> 标签用作引入外部的js文件后,标签体就失效了;
  2. 如果JS代码比较少,功能比较单一可以使用内嵌式,直接在html文件中书写JS代码;
  3. 如果JS代码比较多或者是有些通用的代码,建议把js代码抽取到一个独立的js文件中,使用外联的方式引入;
【练习一】JS与HTML结合方式

【参考代码】

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<!--
			【需求】
			    页面加载完成之后弹出"Hello JavaScript"    alert("")

			 【要求】
			      方式一:在当前页面编写JavaScript代码实现;
			      方式二:将代码编写到一个独立的JavaScript文件中;
		
			JavaScript与HTML的结合方式
				内嵌式:
				    <script> JS代码 </script>
				外联式:
				    <script src="../js/demo1.js"></script>

				特点:
					1.同一个html页面可以书写多个<script>标签;
				    1. <script> JS代码 </script>可以书写在html的任意位置,建议书写在body下面;
                    2.通过script标签引入外部的js文件,script标签体中的内容失效;
                    3.浏览器从上往下解析js代码;
		-->
    <!--外联式:引入外部的js文件-->
    <script src="../js/demo1.js"></script>
	</head>
	<body>

	</body>
    <!--内嵌式:直接在html页面书写-->
    <script>
        alert("Hello JavaScript");
    </script>
</html>

【demo1.js代码】

alert("Hello JavaScript aaaaaaaaaaaaaaa");

二、JavaScript基本语法

1、变量

​ 变量是一块内存区域,用来存储一个变化的量;

【变量声明】Java和JS中变量声明对比

数据类型Java中定义变量JS中定义变量
整数int i = 5;var i = 5;
小数double d = 3.14;var d = 3.14;
布尔boolean b = true;var b = true;
字符char c = ‘a’;(js中没有字符,只有字符串)
字符串String str = “hello”;var str = “hello”;或 var str = ‘hello’;
(1)变量声明:

​ 格式:var 变量名;

(2)变量赋值:

​ 格式:var 变量名 = “值”;

(3) 变量的命名规则:
  1. 变量名由字母,数字,下划线和$组成,不能以数字开头,如:var 2a;
  2. 变量名中不能包含空格;
  3. 不能将JavaScript的关键字用作变量名,如:var function;
  4. JavaScript的变量名区分大小写;

【注意事项】

  1. 关于JS的弱类型:

    同一变量可以接受不同的数据类型;

  2. JS中字符和字符串类型的说明:

    JS中只有字符串类型,没有字符类型数据。单引号和双引号包裹的都是字符串;

  3. 变量定义的特点:

    var关键字可以省略,但是不建议省略。如果省略了,这个变量就变为全局变量。

【练习二】变量声明
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
        <!--mime type-->
		<script type="text/javascript">
            var i = 10;
            alert(i);
            var b = 3.14;
            var h = "hello";
            alert(b);
            alert(h);
		</script>
	</head>
	<body>
	</body>
</html>
2、数据类型

​ JavaScript语言的数据类型分为:基本数据类型引用数据类型

(1) 基本数据类型:

​ JavaScript中常用的有5中基本数据类型,分别是:number,string,boolean,undefined,null;

数据类型例子备注
数值var a = 3;var b = 3.14;整数,小数
字符串var s1 = “hello”;var s2 = ‘hello’;被单引号或双引号包裹
布尔var f1 = true; var f2 = false;true 或 false
未定义类型var u1 ;变量未定义
空类型var n = null;对象的默认值

【判断基本数据类型的方法】 typeof();注意:不能判断null的基本类型;

【练习三】 基本数据类型
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<!--
			【需求】分别定义JS中不同类型的数据,并弹出各自的数据类型
				number:数值型
				string:字符串
				boolean:布尔值
				null:空类型
				undefined:未定义类型
				检测数据类型的方法:typeof
				注意:JS中数据类型是根据所赋值确定的
		-->
		<script type="text/javascript">
			//数值型            整数,小数
			var a = 3;
			var b = 3.14;
			
			//字符串      单引号 和 双引号包裹
			var c = "hello";
			var d = 'w';
			//alert(typeof(c))
			//alert(typeof(d))
			
			//boolean   true,false
			var e = true;
			//alert(typeof(e))
			
			//null 
			var f = null;
			//alert(typeof(f))
			
			//undefined  未定义类型
			var g;
			alert(typeof(g))
		</script>
	</head>
	<body>
	</body>
</html>
(2)引用数据类型(Object):

​ Javascript中除了上面的基本类型(number,string,boolean,null,undefined)之外就是引用类型了,也可以说是就是对象了。JavaScript是一种基于对象的语言,内置了很多对象如:Array,Date、Math对象,这些对象将在下一次课中进行详细讲解。

3、运算符

​ JavaScript中的运算符与Java中的运算符基本一致;

​ JavScript中的运算符可分为:算术运算符,赋值运算符,比较运算符,逻辑运算符,三元运算;

  1. 算术运算符(y=5):
算术运算符描述例子结果
+x=y+2;x=7
-x=y-2x=3
*x=y*2x=10
/x=y/2x=2.5
%求余数x=y%2x=1
++自增x=++y,z=y++x=6,z=6
自减x=–y,z=y–x=4,z=4
  1. 比较运算符(x=5,y=10)
比较运算符描述例子
==等于x8 为 false ; x"5"为true 【比较的是值】
===全等于x=5为true ;x=“5” 为 false 【比较值和类型】
!=不等于x!=8 为 true【比较的是值】
>大于x>8 为 false【比较的是值】
<小于x<8 为 true【比较的是值】
>=大于等于x>=8 为 false【比较的是值】
<=小于等于x<=8 为 true【比较的是值】
  1. 逻辑运算符(x=10,y=5)
逻辑运算符描述例子
&&and(x<=10 && y>1) 结果为 true ;(x && y) 结果为 true
||or(x>10 || y>1)结果为true
not!(x==y) 结果为true

【注意事项】

​ JS的逻辑运算符中没有&|

【练习】 逻辑运算符练习

//给x赋不同的值,带入以下逻辑判断语句观察结果:
	//数值型:var x = 0;var x = 1;
	//字符串:var x = "";var x = "hello";
	//null类型:var x = null;
	//undefined:var x;
if(x){
	alert("结果为true.......");
}else{
	alert("结果为false......");
}

【结论】

  1. &&两边同时为true,结果为true;
  2. ||只要有一边为true,结果为true;
  3. 在逻辑判断中以下情况为false:
数据类型说明
数值型00转化成boolean后为false
字符串“”,’’空字符串转化为boolean后为false
booleanfalse
nullnullnull转化成boolean后为false
undefinedundefinedundefined转化成boolean后为false
  1. 三元运算符
//判断一个数是正数还是负数
var x = 10;
var result = x>0?"正数":"负数";
【练习四】运算符
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
	</body>
<script>
    /*
    * 运算符:算术运算   比较运算   逻辑运算   三元运算
    *
    *   算术运算:+ - * / %  ++ --
    *       注意:+ 运算符既可以做加法运算 又可以拼接字符串
    *
    *   比较运算:> >= < <= == != ===
    *       注意:
    *           1.JS中的比较运算比较的是值,只有===既比较值又比较数据类型;
    *
    *   逻辑运算:&& || !
    *       注意:
    *           在JS中,逻辑判断时以下情形为false:
    *
    *           数值型:0               false
    *           字符串:""              false
    *           布尔值:false           false
    *           空类型:null            false
    *           未定义类型:undefined     false
    *
    *     三元运算:
    *
			三元运算:使用三元运算判断x是正数还是负数
    * */

</script>

</html>

<!--
	【案例一】算术运算符
		使用以下数据完成相应的算术运算:
		var x = 10;
		var y = 5.5;
		var z = "hello";
		要求:
			1.计算x+y,x+z;
			2.分别计算x-y,x*y,x/y,x%y;
			3.分别计算:x++,++x;
	
	【案例二】比较运算符
		使用以下数据完成比较运算:
		var a = "5";
		var b = 5;
		要求:
			1.分别使用"=="和"==="对a和b进行比较;
			
			2.分别使用">="和"<="对a和b进行比较;
		
	【案例三】逻辑运算符
		使用以下数据完成逻辑运算:
		var x = 10;
		var y = 5;
		var z = 0;
		
		要求:
			1.&&练习:判断下列表达式的结果
				x<=10 && y>1
				x>=10 && y>1
				
			2.||练习:判断下列表达式的结果
				x<=10 || y<1
				x>=10 || y<1
			
			3.注意事项:使用以下if语句判断
				if(x){
					alert("结果为true.......");
				}else{
					alert("结果为false......");
				}
				
				【需求】完成以下判断,观察结果
				//1.数值:分别将x和z带入括号中
				//2.字符串:分别把"传智播客"和""带入括号中
				//3.null和undefined:分别把null和undefined带入括号中
				
			4.三元运算:使用三元运算判断x是整数还是负数
-->
4、注释

​ JavaScript中的注释分为单行注释多行注释

【单行注释】:

<script type="text/javascript">
	//我是单行注释
</script>

【多行注释】

<script type="text/javascript">
	/*
	 * 我是多行注释
	 */
</script>

【快捷键提示】 单行注释:Ctrl+/ 多行注释:Ctrl+Shift+/

5、流程控制语句

​ 跟java一样,js也存在if、if-else、for、switch等逻辑语句,与java使用方式一致, 此处不再一一阐述。

【练习五】流程控制语句
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
	</body>
		<!--
			【案例一】if语句练习:
				使用if语句求出以下两个数中的较大者;
				var x = 10;
				var y = 5;
				
			【案例二】for循环练习:
				使用for循环遍历以下数组并打印其中的每一个元素;
				var arr = [5,2,0,6,1,8];
		-->
    <script>
        var x = 10;
        var y = 5;

        // if(x>y) {
        //     alert(x);
        // }else {
        //     alert(y);
        // }
        var arr = [5,2,0,6,1,8];
        for(var i = 0;i<arr.length;i++){
            console.log(arr[i]); //System.out.println("")
        }
    </script>
</html>

三、JavaScript的函数【重点】

​ 与Java中的函数一样,JavaScript中的函数也是为了实现某个功能的一块代码。

1、函数的定义方式:

【需求】求两个数的和;

(1)函数声明(命名函数):
function sum(num1,num2){
    return num1+num2;
  }
(2)函数表达式(匿名函数):
 var sum = function(num1,num2){
    return num1+num2;
  };

【函数定义注意事项】

1、方法的返回值:无需声明返回值类型;

2、方法的入参:无需声明参数类型;

3、JavaScript中不存在函数重载,如果两个方法的方法名相同 ,后面的方法会覆盖前面的方法;

【练习六】函数定义
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
	</body>
	<!--
		【回顾】回顾java中函数(方法)的定义方式,重载
		    public static int getSum(int i1,int i2){
		        return i1+i2;
		    }
		      public static int getSum(int i1,int i2,int i3){
		        return i1+i2;
		    }


		【需求】定义一个方法,求取两个数值型数据的和
		    方式一:函数声明(定义)  function   命名函数
		        function getSum(i1,i2){
		            return i1+i2;
		        }

		    方式二:函数表达式                   匿名函数
		        var getSum2 = function(i1,i2){
		            return i1+i2;
		        }

        注意事项:
        	1. js中定义函数不需考虑函数返回值和参数类型;
            2. js中没有函数重载,只有函数的覆盖;
            3. 函数调用只与方法名有关;

		
	-->
<script>
    //方式一:函数声明
    function getSum1(i1, i2) {
        return i1+i2;
    }
    //调用
   var sum1 =  getSum1(3,4);
    alert(sum1);


    //方式二:函数表达式
    var getSum2 = function (i1, i2) {
        return i1+i2;
    };

    var getSum2 = function (i1, i2,i3) {
        return 5+9;
    };

    var sum2 = getSum2(5,6);
    alert(sum2);
</script>
</html>
2、函数调用

​ 函数调用方式:函数名(参数列表);

​ 如:

<script type="text/javascript">
  	  //定义一个求两个数之和的方法
      function sum(s1,s2) {
          return s1+s2;
      }
      
	 //调用方法
      var result = sum(10, 5);
      alert(result);
</script>

【函数调用注意事项】

1、函数必须先定义才能调用;

2、函数调用是根据方法名来调用的

【练习七】函数调用面试题
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
	</body>
	<!--
		 【面试题】判断运算结果
		 
	      //函数一:求两个数的和
	      function funDemo(s1,s2) {
	          return s1+s2;
	      }
	
	      //函数二:求两个数的差
	      function funDemo(s1,s2,s3) {
	          return s1-s2;
	      }
		  
		 //调用函数
	      var result = funDemo(10, 5);
	      alert(result);
	-->

<script>

    //函数一:求两个数的和
    function funDemo(s1,s2) {
        return s1+s2;
    };

    //函数二:求两个数的差
    function funDemo(s1,s2,s3) {
        return s1-s2;
    };

    //调用函数
    var result = funDemo(10, 5);
    alert(result);

</script>
</html>

四、JavaScript事件【重点】

1、什么是JavaScript事件

​ JavaScript提供的一套API,监听用户在浏览器上的操作(鼠标点击、提交注册表单,选中单选框。。。。),监听到用户操作之后,可以针对用户的操作,执行一些js代码。

在这里插入图片描述

2、常用的JavaScript事件:
事件名描述
onclick鼠标点击某个对象
onload某个页面或图像被完成加载
**onsubmit **当表单提交时触发该事件—注意事件源是表单form
ondblclick鼠标双击某个对象
onblur元素失去焦点(离焦事件)
onfocus元素获得焦点
onchange用户改变域(input输入框)的内容
onkeydown某个键盘的键被按下
onkeypress某个键盘的键被按下或按住
onkeyup某个键盘的键被松开
onmousedown某个鼠标按键被按下
onmouseup某个鼠标按键被松开
onmouseover鼠标被移到某元素之上
onmouseout鼠标从某元素移开
onmousemove鼠标被移动
3、事件的绑定

事件的绑定就是将事件绑定到页面的某个元素上;

【需求】

  1. 在页面上书写一个按钮;
  2. 点击按钮后弹出一个提示框,提示框中的内容为"Hello World!";

【步骤】:

  1. 确定要添加的事件的html元素—按钮(事件源);
  2. 明确要添加什么事件;
  3. 给元素绑定事件;
  4. 书写事件要执行的具体内容(JavaScript代码);
  5. 触发事件;

【事件绑定一】静态绑定

​ 静态绑定是指:直接在标签上书写事件和这个事件被触发时要执行的函数;

<button onclick="clickBtn();">我是按钮,请点击我</button>

<script>
  function clickBtn(){
    	alert("Hello World!");
  }
</script>

【事件绑定二】动态绑定

​ 动态绑定是指:先获取要绑定事件的对象,然后再给这个对象绑定事件;

<script>
  document.getElementById("btn").onclick = function(){
    	alert("Hello World");
  }
</script>

【知识点铺垫】

1.通过id动态获取标签对象:
	var myBtn = document.getElementById("btn");
2.通过标签对象获取标签的value属性值:
	var attrVal = document.getElementById("idVal").value;
【练习八】事件绑定
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<button  onclick="singSong();">我是班长,点我,我会唱歌</button><br>
		<button id="btn" >我是副班长,点我,我会跳舞</button><br>
	</body>

	<script>
        /*
        *【需求】分别使用静态绑定和动态绑定给button绑定事件
        *
        * 静态绑定:
        *       1.把事件以属性的方式注册到标签上;
        *       2.书写函数执行事件被触发后执行的功能;
        *
        * 动态绑定:
        *       1.获取要添加事件的标签对象;
        *       2.给标签对象派发事件;
        * */

        /*
        * 静态绑定:
        * */
		function singSong() {
			alert("我唱歌了。。。。。。。。。。。。。。。。。。。。")
        }
        /*
        * 动态绑定
        * */
        document.getElementById("btn").onclick = function () {
            alert("我跳舞了 哈哈哈哈哈");
        };
	</script>
</html>

【事件绑定总结】

  1. 静态绑定:js事件和html代码过于耦合;【事件注册】
  2. 动态绑定:js事件和html代码分离; 【事件派发】
  3. 开发过程中动态绑定事件使用得较多;
4、常用事件演示
(1)onload事件

【案例演示】onload事件应用场景演示

【需求】将派发事件的代码书写在<head> 标签之中;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <script type="text/javascript">
    //1.动态获取按钮并将按钮绑定事件
        document.getElementById("btn").onclick = function(){
          alert("Hello World");
    }
  </script>
</head>
<body>
    <button id="btn" >我是按钮,请点击我</button>
</div>
</body>
</html>

【分析】上述代码在浏览器加载的时候,要给btn按钮派发单击事件。但是当程序执行到第8行的时候,btn按钮并没有被加载,所以就获取不到btn按钮。

1、用法

onload事件是在某个页面被浏览器加载完成之后才触发的事件;

【练习九】onload事件
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
        <script>
            //在页面完成之后执行
            window.onload = function () {
                document.getElementById("btn").onclick = function () {
                    alert("我跳舞了 哈哈哈哈哈");
                };
            };
        </script>
    </head>
	<body>
		<!--
			【需求】将事件动态绑定案例中的代码挪到head标签中观察执行结果
		-->
		<button id="btn" >我是副班长,点我,我会跳舞</button><br>
	</body>
</html>
2、【小结】
  1. 浏览器加载页面的顺序:从上到下;
  2. onload事件的应用场景:整个html页面加载完成之后,在执行js的操作(因为js操作中可能提前使用到html页面的标签);
  3. onload事件最常用写法:window.onload = function(){//方法体}
(2) onblur事件

作用:

  1. onblur事件是一个监听鼠标光标离开的事件;

【应用场景】:

  1. 鼠标光标移开用户名输入框之后,检查用户名是否输入;
【练习十】onblur事件
<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>

	</head>

	<body>
		<form action="" method="get">
			用户名:<input type="text" name="userName" id="userName" /><br />
			<input type="submit" value="提交订单" />
		</form>
	</body>
    <script type="text/javascript">
        /*
            onblur事件:监听鼠标光标离开

        * 【需求】校验用户名
        * 【要求】鼠标光标移开用户名输入框之后,检查用户名是否输入;
        * */
        //动态获取标签对象:userName
        document.getElementById("userName").onblur = function (ev) {
            //检查用户名是否输入:判断userName是否有值  === value值
            var userName = document.getElementById("userName").value;
               if(userName == ""){
                   alert("请求输入用户名!");
               }
        }
    </script>
</html>
(3) onchange事件

作用:

onchange事件用于监听表单中输入的内容有没有改变,如有改变则onchange事件被触发;

【应用场景】:

  1. 修改商品数量后自动计算出商品总价;
  2. 提示:
    1. 获取某个标签对象:var inputObj = document.getElementById("idVal");
    2. 获取这个标签对象的value值:var inputObjValue = inputObj.value;
    3. 给这个标签对象赋value值:inputObj.value = "值";
【练习十一】onchange事件
<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>

	<body>
		<form action="" method="get">
			商品单价:<input value="10" id="proPrice" />
			*商品件数:<input type="text" id="num"  onchange="calculateTotalPrice(this.value);"/>
			=商品总价:
			<input type="text" id="totalPrice" /><br />
			<input type="submit" value="提交订单" />
		</form>
	</body>
	<script type="text/javascript">
        //【需求】根据商品件数动态计算商品总价
		/*
		* oncahage:监听内容改变
		* */
		//当商品件数改变,计算总价
		function calculateTotalPrice(num) {
            //总价 = 单价*件数;
            var totalPrice = 10*num;
            //给商品总价赋值
            document.getElementById("totalPrice").value = totalPrice;
        }
	</script>
</html>
(4) onsubmit事件

作用:监听用户提交表单的操作;

【演示】演示onsubmit事件是怎么阻止表单提交的

  • 方式一:给form表单静态绑定onsubmit事件;
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<form action="#" onsubmit="return checkForm();">
			用户名:<input type="text"  name="username" id="uName"/><br />
			密码:<input type="password" name="pwd" id="pwd"/><br />
			<input type="submit" value="注册" />
		</form>
	</body>
	
	<script type="text/javascript">
		//注册表单校验
		function checkForm(){
			/*
			 * return true:表单能够正常提交
			 * return false:能够阻止表单提交
			 */
			//return true;
			return false;
		}
	</script>
</html>
  • 方式二:给form表单动态绑定onsubmit事件
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<form action="#" id="registFrom">
			用户名:<input type="text"  name="username" id="uName"/><br />
			密码:<input type="password" name="pwd" id="pwd"/><br />
			<input type="submit" value="注册" />
		</form>
	</body>
	
	<script type="text/javascript">
		document.getElementById("registFrom").onsubmit = function(){
			//return true:表单提交
			//return false:表单被阻止提交
			
			//return true;
			return false;
		}
	</script>
</html>

【结论】

  1. onsubmit方法的返回值为true,表单能够正常提交;返回值为false 表单提交被阻止;
  2. onsubmit方法注册到form标签上的时候,前面需要加return;

【综合案例】注册表单校验案例

【需求】

  1. 给表单绑定提交事件;

  2. 对表单中的用户名和密码进行非空校验,校验不通过阻止表单提交;

    【示例代码】

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<form action="#" id="registFrom">
			用户名:<input type="text"  name="username" id="uName"/><br />
			密码:<input type="password" name="pwd" id="pwd"/><br />
			<input type="submit" value="注册" />
		</form>
	</body>
	<script>
        /*
        * 【需求】注册表单校验
        * 【要求】
        *    1.在用户名和密码都输入的情况下表单才能被提交;
        * */

        //动态给form标签 绑定onsubmit
        document.getElementById("registFrom").onsubmit = function () {

            //动态获取用户名和密码  的value值
            var userName = document.getElementById("uName").value;
            var pwd = document.getElementById("pwd").value;
           // !"" && !""
            if(userName == "" || pwd == ""){
                return false;
            }else{
                return true;
            }
            //onsubmit事件中
            //return  true;  表单正常提交
            //return  false; 阻止表单提交
        };
	</script>
</html>

五、BOM对象

1、BOM对象是什么?browser object model

在这里插入图片描述

  • BOM是Browser Object Model的缩写,简称浏览器对象模型;

  • BOM提供了独立于内容而与浏览器窗口进行交互的对象;

  • BOM由一系列相关的对象构 成,并且每个对象都提供了很多方法与属性;

2、BOM对象有哪些?

在这里插入图片描述

BOM对象说明
Window对象表示一个浏览器窗口或一个框架
Location对象包含了当前地址栏对象
History对象包含了访问过的历史信息
Navigator对象包含了客户端浏览器的信息
Screen对象包含了客户端显示屏的信息
3、BOM对象详解
(1)Window对象

​ Window 对象表示浏览器中打开的窗口。

Window对象—消息框
方法使用示例效果方法返回值
alert(arg)alert(“Hello”)在这里插入图片描述
confirm(arg)var f = confirm(“确定要删除吗”);在这里插入图片描述点击确定 返回true;
点击取消 返回false;
prompt(arg)var value = prompt(“请输入密码”);在这里插入图片描述点击确定 返回输入的内容;
点击取消 返回null;
【练习十二】消息框
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
	</body>
<script>
	/*
	* 【需求】演示window对象的消息框
	*   1.警告框;alert();
	*   2.输入框;prompt();
	*   3.确认框;confirm();
	* */
    // alert("hello");

    // var num = prompt("请输入银行卡号");
    // console.log(num);

    var confirmFlag = confirm("确定要删除吗?");
    if(confirmFlag) {
        //确定要删除
        console.log("删除了.............");
    };
</script>
</html>
Window对象—定时器
方法参数说明
setTimeout(code,millisec)在指定时间(毫秒值)后执行一次
clearTimeout(id_of_settimeout)清除setTimeout()方法
setInterval(code,millisec);按照指定时间,周期性地执行
clearInterval(ID)清除周期性执行的方法
**【练习十三】**定时炸弹 —setTimdout(fn,mills);
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <button onclick="boom();">点我,我会爆炸</button>
</body>
<script>
	/*
	定时器:
	    1.定时炸弹;
	        setTimeout(fn,milliseconds);

	    2.周期性执行的函数;
            setInterval(fn,milliseconds);

	* 【需求】使用setTimeout()方法模拟定时炸弹
	* */

	function boom() {
        //定时执行  爆炸
        // setTimeout(function () {
        //     alert("我爆炸了..........")
        // },3000);

        var timeout = setTimeout("baoZha();", 3000);
        clearTimeout(timeout);
    }
    function baoZha() {
        alert("我爆炸了.....................")
    }
</script>
</html>
**【练习十四】**轮播图 —setInterval(fn,mills);
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<div >
			<img width="100%" id="img" src="../img/3.jpg"/>
		</div>
	</body>
    <script>
        /*
        * 【需求】使用setInterval(fn,millisecond)完成轮播图案例
        * */

        setInterval("changeImg();",2000);

        //改变图片   src属性
        var count = 1;
        function changeImg() {
            if(count>3) {
                count = 1;
            }
            document.getElementById("img").src = "../img/"+count+".jpg";
           count++;
        }
    </script>
</html>
Window对象—全局函数
方法说明使用示例结果
parseInt(string)将string类型的数字转换成整数var i = parseInt(“34”);i = 34
parseFloat(string)将string类型的数字转换成小数var i = parseFloat(“3.14”)i = 3.14
isNaN(value)判断value是否非数字var f 1 = isNaN(3); var f2 = isNaN(“A”);f1=false;f2=true;
eval(string)将字符串解析成JavaScript代码eval(“var x=10;var y=20;alert(x*y)”);弹出警告框,内容为200

【需求一】现在有个一字符串类型的数字var a = “5”,要求求取a+10后的结果;

(2)Location对象

​ Location对象包含了当前URL的信息;

Location对象—常用属性:
属性描述
href获取或者设置当前的URL

【使用示例】

获取当前的URL:location.href

将当前的URL设置成"http://www.baidu.com":
location.href = “http://www.baidu.com”;

Location对象—常用方法
属性描述
reload()重新加载当前页面
(3)History对象

​ History对象包含了用户(在浏览器中)访问过的URL.

History对象—常用方法
方法说明参数说明
back()加载 history 列表中的前一个 URL
forward()加载 history 列表中的下一个 URL
go()加载 history 列表中的某个具体页面go(-1):访问上一个页面;go(1):访问下一个页面;

六、总结

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值