JavaWeb--------JavaScript基础

目录

一. JavaScript 概述

二. 基本语法

三. 案例及相关知识


JavaWeb--------JavaScript基础_第1张图片

 

一. JavaScript 概述

1.1 JavaScript简介

JavaScript 是互联网上最流行的脚本语言,这门语言可用于 HTML 和 web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。是一种轻量级的编程语言。可插入 HTML 页面的编程代码。插入 HTML 页面后,可由所有的现代浏览器执行。它是一种解释型语言,代码执行时不进行预编译。

JavaScript的组成:

JavaWeb--------JavaScript基础_第2张图片

ECMAScript核心,描述了该语言的语法、变量、关键字、保留字、数据类型、语句、函数、和基本对象等等
DOM 浏览器对象模型,描述了处理网页内容的方法和接口,包含整个HTML页面的内容
BOM 文档对象模型,操作文档中的元素和内容,描述了与浏览器进行交互的方法和接口,包含整个浏览器的内容。

1.2. JavaScript作用

使用JavaScript添加页面动态效果,提供用户操作体验。主要应用有:嵌入动态文本于HTML页面、对浏览器事件作出响应、读写HTML元素、验证提交数据、检测访客的浏览器信息等。

HTML ,它是整个网站的骨架,好比一个素颜女人。

CSS ,对整个网站骨架中的内容进行修饰,好比一个化了妆打扮得漂漂亮亮的美女。

JavaScript,它能够使整个网站页面具有动态效果,好比一个化了妆打扮得漂漂亮亮的美女在翩翩起舞。注意,JS是使页面显示的内容有了动态效果,但它不属于动态页面的概念。动态页面,是指能够实时地从后台获取数据并展现在浏览器前端的页面。

Javascript与Java的关系:两者没有联系,好比雷锋和雷锋塔 

1.3 JavaScript的引入

日常开发中JavaScript的编辑工具,建议使用 HBuilder

JavaWeb--------JavaScript基础_第3张图片

在HTML文件中引入JS的方式有两种:内嵌式和外联式

内嵌式:在HTML文档中,通过标签,直接嵌入javascript脚本。代码如下:

		

外联式:在HTML文档中,通过

小案例,如下:





W3Cschool教程(w3cschool.cn)


	

JavaScript 能够直接写入 HTML 输出流中:

您只能在 HTML 输出流中使用 document.write。 如果您在文档已加载后使用它(比如在函数中),会覆盖整个文档。

二. 基本语法

2.1 变量

区分大小写。是弱类型,如果没有给变量赋值,这个变量是不属于任何类型的,默认为undefined。如果一个变量前面没有加var则它是一个全局变量,如果加了var则它是一个局部变量。

JavaWeb--------JavaScript基础_第4张图片

2.2 数据类型

Undefined表示变量没有定义,而null表示变量根本不存在。

JavaWeb--------JavaScript基础_第5张图片

2.3 运算符

JavaWeb--------JavaScript基础_第6张图片

== 会尝试着将字符串类型转换成数字类型,而=== 不具备此功能。在JS中没有Java中有的equal()方法。

  JavaWeb--------JavaScript基础_第7张图片

2.4 基本操作

三. 案例及相关知识

下面结合各个不同的具体例子来进一步了解JavaScript的相关知识

3.1 使用JS完成简单的数据检验

案例一,使用JS完成简单的数据检验,注册表的的校验。用户进行注册的时候,会输入一些内容,如果有些内容的输入不合法,会增加服务器的压力,我们需要对用户输入的信息进行校验(校验包括前端校验和后台校验,其中前端的校验防君子不防小人)。在本例中只对用户名、密码、确认密码、邮件 4个项进行了校验,代码如下:



	
		
		注册页面
		
	
	
		
会员注册    USER REGISTER
用户名
密码
确认密码
Emaile
姓名
性别
出生日期
验证码
如果Id是个字符串必须加引号,如果是个变量而不必加引号。 var uValue = document.getElementById("user").value; //alert(uValue); if(uValue==""){ //2.给出错误提示信息 alert("用户名不能为空!"); return false; } /*校验密码*/ var pValue = document.getElementById("password").value; if(pValue==""){ alert("密码不能为空!"); return false; } /**校验确认密码*/ var rpValue = document.getElementById("repassword").value; if(rpValue!=pValue){ alert("两次密码输入不一致!"); return false; } /*校验邮箱*/ var eValue = document.getElementById("eamil").value; if(!/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/.test(eValue)){ alert("邮箱格式不正确!"); return false; } }
会员注册    USER REGISTER
用户名
密码
确认密码
Emaile
姓名
性别
出生日期
验证码

3.1.1 案例分析:

实现此功能,JavaScript的常规操作步骤为:

 JavaWeb--------JavaScript基础_第8张图片

这里绑定函数的位置应该在表单处

标签里面,而不是在注册按钮处

获取元素:document.getElementById("user");  返回为一个object类型的数据。并在所要获取内容的元素处加上id属性。

获取元素里面的值:document.getElementById("user").value;  返回的是与这个内容一致的数据

onsubmit 事件,有返回值。

判断内容为空使用的是 ==“”,双引号里面的内容什么也没有。而不能使用== null。

3.1.2 相关的知识:

JavaWeb--------JavaScript基础_第9张图片

JS中正则匹配的方式有两种:使用String对象中的match()方法,使用正则对象中的test()方法。

JS中的函数编写方式为:

JavaWeb--------JavaScript基础_第10张图片

JS的输出:

警告框: alert( )
向页面指定位置写入内容: innerHTML(属性)
向页面写入内容: document.write("");

3.2 使用JS完成图片轮播效果 

案例二,使用JS完成图片轮播效果:

1.)当点击按钮的时候页面中就显示出下一张图片。

2.)不做操作的时候,每隔2 秒,页面自动显示下一张图片。

JavaWeb--------JavaScript基础_第11张图片

代码如下:



	
		
		切换图片
		
		
	
	
		

3.2.1 案例分析:

实现此功能,JavaScript的常规操作步骤为:

onload事件在一个HTML文档中只能出现一次。在实现此案例的效果时,要在里面通过onload事件来绑定init()方法。开启计时器,每隔2000毫秒重新设置图片的src 属性。

在实现轮播图效果的时候,所引用的图片的名字必须包含一定顺序的数字。使用的循环方式,是通过触发事件的形式来实现的。触发一次事件调用一次方法,执行一次循环。当到了最后一张图片的时候需要进行重置。

3.2.2 相关的知识:

定时器 setInterval(多次反复执行)
在《w3school离线手册》中,点击 JavaScript ==> JS简介 ==> JavaScript实现 ==> JS参考手册下的JavaScript对象 ==> Window ==> setInterval

JavaWeb--------JavaScript基础_第12张图片

3.3 使用JS完成页面定时弹出广告

案例三,使用JS完成页面定时弹出广告。

我们平时浏览网页的时候会自动弹出一个广告,过了一小会广告又自动消失了。

代码如下:



	
		
		首页
		
		  
	
	
		
	

3.3.1 案例分析:

实现此功能,JavaScript的常规操作步骤为:

JavaWeb--------JavaScript基础_第13张图片

3.3.2 相关的知识:

JavaWeb--------JavaScript基础_第14张图片

定时器的回调函数并不是相当于在时间到了就执行,而是有一个主JS执行进程,这个进程是页面刚加载的时候页面按照加载顺序执行的JS代码,此外还有一个需要在进程空闲的时候执行的代码队列,而我们所说的定时器的回调就是相当于在**ms之后把定时器回调放入到空闲队列中(注意,空闲队列有可能还有其它的代码,比如点击事件,因此定时器回调放入的位置不一定是空闲队列的开始位置!)。简单的可以理解位定时器和JS其他程序是并行执行的。setInterval有个很烦的地方就是当JS主程序空闲时候,执行代码队列里面的代码的时候,如果此时候我们有一个问题,定时器是等到回调执行完,才开始计时进行下次循环呢?还是只要一次计时完毕,插入回调之后不管回调执不执行就开始计时呢?答案显然是后者,当我们插入回调的 

settimeout和setinterval的区别:

1) setInterval在执行完一次代码之后,经过了那个固定的时间间隔,它还会自动重复执行代码,而setTimeout只执行一次那段代码。

2) setTimeout方法不会每隔**秒钟就执行一次showTime函数,它是在每次调用setTimeout后过**秒钟再去执行showTime函数。这意味着如果showTime函数的主体部分需要1秒钟执行完,那么整个函数则要每(**+1)秒钟才执行一次。而setInterval却没有被自己所调用的函数所束缚,它只是简单地每隔一定时间就重复执行一次那个函数。

JavaScript获得或修改样式

JavaWeb--------JavaScript基础_第15张图片

3.4 使用JS完成表单校验

案例四,案例一中当点击注册的时候如果输入不符合就马上弹出框,用户体验不好,需要完善。

JavaWeb--------JavaScript基础_第16张图片

代码如下 :



	
		
		注册页面
		
		
		
	
	
		
会员注册 USER REGISTER
用户名
密码
确认密码
Emaile
姓名
性别
出生日期
验证码
这部分是之前案例一中没有完善的代码 function checkForm(){ //alert("aa"); /**校验用户名*/ //1.获取用户输入的数据 var uValue = document.getElementById("user").value; //alert(uValue); if(uValue==""){ //2.给出错误提示信息 alert("用户名不能为空!"); return false; } /*校验密码*/ var pValue = document.getElementById("password").value; if(pValue==""){ alert("密码不能为空!"); return false; } /**校验确认密码*/ var rpValue = document.getElementById("repassword").value; if(rpValue!=pValue){ alert("两次密码输入不一致!"); return false; } /*校验邮箱*/ var eValue = document.getElementById("eamil").value; if(!/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/.test(eValue)){ alert("邮箱格式不正确!"); return false; } } -->
会员注册 USER REGISTER
用户名
密码
确认密码
Emaile
姓名
性别
出生日期
验证码

3.4.1 案例分析

实现此功能,JavaScript的常规操作步骤为:

JavaWeb--------JavaScript基础_第17张图片

3.4.2 相关的知识

JavaWeb--------JavaScript基础_第18张图片

3.5 对表格数据进行隔行操作

开发中,需要使用表格陈列数据,数据过多时不易查看,通常使用隔行换色进行表示

JavaWeb--------JavaScript基础_第19张图片

代码如下:



	
		
		表格隔行换色
		

	
	
		
编号 姓名 年龄
1 张三 22
2 李四 25
3 王五 27
4 赵六 29
5 田七 30
6 汾九 20

3.5.1 案例分析

实现此功能,JavaScript的常规操作步骤为:

JavaWeb--------JavaScript基础_第20张图片

3.5.2 相关的知识

如下表格,当鼠标移动到所对应的行时,行变为红色,移开是恢复白色

JavaWeb--------JavaScript基础_第21张图片



	
		
		表格隔行换色
		

	
	
		
编号 姓名 年龄
1 张三 22
2 李四 25
3 王五 27
4 赵六 29
5 田七 30
6 汾九 20

3.6 对表中的各行进行全选和全不选操作

在开发中,经常需要对数据进行“批量处理”,这种情况下要快速地对列表项进行操作。当选中第二行中前面的复选框时,下面所有的复选框都被选中;当不选中第二行中的复选框时,后面所有的复选框都处于未选中状态。

JavaWeb--------JavaScript基础_第22张图片

代码如下:



	
		
		全选和全不选
		
		
	
	
		
编号 姓名 年龄
1 张三 22
2 李四 25
3 王五 27
4 赵六 29
5 田七 30
6 汾九 20

3.6.1 案例分析

实现此功能,JavaScript的常规操作步骤为:

 JavaWeb--------JavaScript基础_第23张图片

3.6.2 相关的知识

JavaWeb--------JavaScript基础_第24张图片

Document:整个html文件都成为一个document文档
Element:所有的标签都是Element元素
Attribute:标签里面的属性
Text:标签中间夹着的内容为text文本

Node:document、element、attribute、text统称为节点node

Document对象

每个载入浏览器的 HTML 文档都会成为 Document 对象。

JavaWeb--------JavaScript基础_第25张图片

后面两个方法获取之后需要遍历!
以下两个方法很重要,但是在手册中查不到!
创建文本节点:document.createTextNode()

创建元素节点:document.createElement() 

Element对象
我们所认知的html页面中所有的标签都是element元素

JavaWeb--------JavaScript基础_第26张图片

Attribute对象

我们所认知的html页面中所有标签里面的属性都是attribute

JavaWeb--------JavaScript基础_第27张图片

代码如下:



	
		
		动态添加城市
				
	

	
		
		
  • 北京
  • 上海
  • 广州

3.7 省市二级联动

我们希望在注册页面中添加一个字段(籍贯),当用户选择一个具体的省份,在后面的下拉列表中动态加载该省份下所有的城市。

JavaWeb--------JavaScript基础_第28张图片

代码如如下:



	
		
		注册页面重新布局	

		
		
	
	
		
会员注册
用户名
密码
确认密码
email
姓名
籍贯
性别
出生日期
验证码

3.7.1 案例分析

实现此功能,JavaScript的常规操作步骤为:

第一步:确定事件(onchange)并为其绑定一个函数
第二步:创建一个二维数组用于存储省份和城市
第三步:获取用户选择的省份
第四步:遍历二维数组中的省份
第五步:将遍历的省份与用户选择的省份比较
第六步:如果相同,遍历该省份下所有的城市
第七步:创建城市文本节点
第八步:创建option元素节点
第九步:将城市文本节点添加到option元素节点中去
第十步:获取第二个下拉列表,并将option元素节点添加进去
第十一步:每次操作前清空第二个下拉列表的option内容。

事件(onchange)
使用一个二维数组来存储省份和城市(二维数组的创建?)
获取用户选择的省份(使用方法传参的方式:this.value)
遍历数组(获取省份与用户选择的省份比较,如果相同了,继续遍历该省份下所有的城市)
创建文本节点和元素节点并进行添加操作
createTextNode()
createElement()
appendChild()

3.7.2 相关的知识

JavaWeb--------JavaScript基础_第29张图片

-----------------------------------------------------------  我是低调的分隔线  -----------------------------------------------------------

JavaWeb--------JavaScript基础_第30张图片

 

                                                                                                             吾欲之南海,一瓶一钵足矣...

你可能感兴趣的:(编程,javascript,开发语言,ecmascript)