JavaScript在web中的简单使用(三)

前言:本文中会通过几个案例,对JavaScript中常用的API进行学习。

案例一 对用户填写的数据进行校验

一、准备工作

首先要知道我们要执行哪些步骤 ?第一步,我们要确定要提交要用到的是哪个事件。显然我们这里要用到onsubmit事件,然后为其绑定一个函数(checkForm());第二步:如何获取用户输入的数据。知道了事件之后,就是要获取用户填写的数据了,要想获取填写的数据,就需要先获取对应的元素,这个在上一篇文章中有谈到过;第三步:对用户输入的数据要进行哪些判断。这个就是JavaScript的方法中要执行的具体操作了;第四步:根据数据是否合法给出相应的后续操作。

二、技术点补充

分析好我们要做的操作步骤之后,这边需要补充一些知识点。大家最不清楚的就是如何获取用户输入的数据,是吧。前面谈到,我们先要通过id找到对应的元素:document.getElementById(id); 再获取对应元素的值:document.getElementById(id).value; 然后先做简单的非空判断吧,与java不同的是,JavaScript中没有equals()方法,直接使用“==”来判断;好了,了解了这些时候,我们看看具体的代码实现吧:

首先我们有一个表单:

<form action="#" method="get" name="regForm" οnsubmit="return checkForm()">
	<table border="1px" width="750px" height="400px" align="center" cellpadding="0px" cellspacing="0px" bgcolor="white">
		<tr>
			用户名 <input type="text" name="user" size="34px" id="user"/>
		</tr>
		<tr>
			 密码 <input type="password" name="password" size="34px" id="password"/>
		</tr>
		<tr>
			确认密码 <input type="password" name="repassword" size="34px" id="repassword"></input>
		</tr>
	</table>
</form>

大家会好奇,为什么onsubmit事件绑定的checkForm()方法前面要加一个return,这里解释一下,onsubmit 事件一般用于表单提交的位置,添加return是因为定义函数的时候需要给你一个返回值,也是为了控制表单的提交。

然后呢,我们在JavaScript代码中实现具体的校验操作:
<script>
	function checkForm(){
		//1.获取用户输入的数据
		var uValue = document.getElementById("user").value;
		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;
		}
	}
</script>

案例二 利用图片切换来实现图片轮播

一、准备工作
一样的,我们先要分析好,要执行哪些步骤?第一步:要在什么事件中实现这个功能呢。前面是因为有用户输入,然后点击按钮提交表单数据时候才触发,而图片轮播一般是在页面加载完成的时候就要开始执行,所以这里需要用到的事件是onload(),然后为其绑定一个函数(changeImg());第二步:书写绑定的函数。

二、知识点补充

显然,图片的自动切换需要一个定时任务,这里补充讲解一下JavaScript中的定时任务 setInterval(function,time);这个方法的意思是定期(time)执行某种操作(function)

首先,我们有一个html页面:

<body οnlοad="init()">
	<!--轮播图部分-->
	<img src="../img/1.jpg" width="100%" id="img1"/>
</body>
接下来书写init中具体的功能:

<script>
	function init()
	{
		//书写轮图片显示的定时操作
		setInterval("changeImg()",3000);
	}
	//书写函数
	var i=0
	function changeImg()
	{
		i++;
		//获取图片位置并设置src属性值
		document.getElementById("img1").src="../img/"+i+".jpg";
		if(i==3)
		{
			i=0;
		}
	}
</script>
这边顺便提一下如何控制某部分定时出现和定时消失,先讲一下,如何控制元素的出现和隐藏,首先我们需要将元素添加到文档中,然后设置其属性display,控制其显示和隐藏,(一般在元素中找不到想要的属性,可以试试添加style,因为style是每个元素共有的属性)。这里需要用到两次定时操作,一次用来控制定时出现,另一次用来控制定时消失,这两次都需要使用到定时任务,我们需要在执行完定时任务之后,清理定时任务,清除定时操作使用clearInterval(要清除的定时任务);下面直接看代码:

html页面代码片段:

<body οnlοad="init()">
	<img src="../img/1.jpg" width="100%" style="display: none" id="img"/>
</body>
下面是对应JavaScript代码:

<script type="text/javascript">
	function init()
	{
		//1.设置显示图片的定时操作
		time = setInterval("show()",3000);
	}
	//2.书写显示图片的函数
	function show()
	{
		//3.获取广告图片的位置
		var adEle = document.getElementById("img");
		//4.修改图片元素里面的属性让其显示,block代表显示
		adEle.style.display = "block";
		//5.清除显示图片的定时操作
		clearInterval(time);
		//6.设置隐藏图片的定时操作
		time = setInterval("hid()",3000);
	}
	//7.书写隐藏图片的函数
	function hid()
	{
		//8.获取图片并设置其style属性的display值为none
		document.getElementById("img").style.display= "none";
		//9.清除隐藏图片的定时操作
		clearInterval(time);
	}
</script>

案例三 实现表格隔行换色和鼠标经过的高亮显示

步骤分析这边就省略了,我们先要了解一下,在JavaScript中只有数组,没有java中的集合那些的数据结构。我们的思路就是,拿到表格中的所有行,遍历每一行,对单数行设置颜色一,对偶数行设置颜色二,直接贴上代码吧:

<script>
	window.onload = function(){
		//1.获取表格
		var tblEle = document.getElementById("tableid");
		//2.获取表格中tbody里面的行数(长度)
		var len = tblEle.tBodies[0].rows.length;
		//3.对tbody里面的行进行遍历
		for(var i=0;i<len;i++){
			if(i%2==0){
				//4.对偶数行设置背景颜色
				tblEle.tBodies[0].rows[i].style.backgroundColor="pink";
			}else{
				//5.对奇数行设置背景颜色
				tblEle.tBodies[0].rows[i].style.backgroundColor="gold";
			}
		}
	}
</script>
第二个是实现鼠标经过之后的高亮显示功能,这里又要介绍新的事件了:onmouseover和onmouseout,大家看单词意思就能理解,两者分别表示鼠标经过和鼠标离开。我这里直接贴上代码

html中的代码如下:

<table border="1" width="500" height="50" align="center">
	<thead>
		<tr>
			<th>学号</th>
			<th>姓名</th>
			<th>年龄</th>
		</tr>
	</thead>
	<tbody>
		<tr οnmοuseοver="changeColor('tr1','over')" id="tr1" οnmοuseοut="changeColor('tr1','out')">
			<td>1</td>
			<td>张三</td>
			<td>22</td>
		</tr>
		<tr οnmοuseοver="changeColor('tr2','over')" id="tr2" οnmοuseοut="changeColor('tr2','out')">
			<td>2</td>
			<td>李四</td>
			<td>25</td>
		</tr>
	</tbody>
</table>
大家可以看到,这里需要首先对表格行中指定onmouseover和onmouseout两个事件对应的函数。这函数都是我们自己定义的,传进去的参数第一个是元素的id,第二个参数是鼠标状态,这个大家可以自己定义。

然后在JavaScript中具体实现的代码如下:

<script>
	function changeColor(id,flag){
		if(flag=="over"){
			document.getElementById(id).style.backgroundColor="red";
		}else if(flag=="out"){
			document.getElementById(id).style.backgroundColor="white";
		}
	}
</script>

案例四 实现复选框全选或者全不选

大家应该有这样的使用经历,就是在一个表格中有好多选项,要大家勾选,有时候我们很想全部够勾选,或者发现勾错了,又想初始成全都不选,然后表格中顶部标题行有一个复选框,用来让大家选择是否全部勾选,下面选框的状态会全部和这个的状态一致,这里我们来模仿实现这么一个功能。

先复习一下,复选框就是input的type设置为checkbox,其有一个属性checked代表该复选框的选中状态,然后就是还有一点,我们平时属性放在变量名接等号的后面,表示获取这个属性值,如果属性名放在等号前面,等号后面接 一个值表示给这个属性赋值;那么了解了这些之后,我们就可以实现这个功能了:

先看看html的布局:

<table border="1" width="500" height="50" align="center" >
	<thead>
		<tr>
			<th><input type="checkbox" οnclick="checkAll()" id="checkAll"/></th>
			<th>编号</th>
			<th>姓名</th>
			<th>年龄</th>
		</tr>
	</thead>
	<tbody>
		<tr >
			<td><input type="checkbox" name="checkOne"/></td>
			<td>1</td>
			<td>张三</td>
			<td>22</td>
		</tr>
		<tr >
			<td><input type="checkbox" name="checkOne"/></td>
			<td>2</td>
			<td>李四</td>
			<td>25</td>
		</tr>
	</tbody>
</table>
大家应该还记得,checkbox设置name相同表示同一组。下面我们需要获取到表格中所有行中的checkbox,然后根据上面状态框来遍历所有的checkbox并设置其选中状态和状态框的一致。

<script>
	function checkAll(){
		//1.获取编号前面的复选框
		var checkAllEle = document.getElementById("checkAll");
		//2.对编号前面复选框的状态进行判断
		if(checkAllEle.checked==true){
			//3.获取下面所有的复选框
			var checkOnes = document.getElementsByName("checkOne");
			//4.对获取的所有复选框进行遍历
			for(var i=0;i<checkOnes.length;i++){
				//5.拿到每一个复选框,并将其状态置为选中
				checkOnes[i].checked=true;
			}
		}else{
			//6.获取下面所有的复选框
			var checkOnes = document.getElementsByName("checkOne");
			//7.对获取的所有复选框进行遍历
			for(var i=0;i<checkOnes.length;i++){
				//8.拿到每一个复选框,并将其状态置为未选中
				checkOnes[i].checked=false;
			}
		}
	}
</script>

案例五 动态添加信息

动态添加信息,就是在原有的数据基础上,添加新的数据,比如在一个班级已有的学生中添加新的学生,这个功能需要一些新的知识点补充:前面提到,整个html文件都称作Document;所有的标签都称作元素(Element),标签内部的设置称作属性(Attribute),标签的开始结尾之间放置的内容称作这个标签的Text;所有的Document、Element、Attribute、Text统称为(节点)Node;然后我们学习一下element对象的一些方法:
element.appendChild(); 添加一个子节点
element.firstChild(); 当前元素下面的第一个子节点
element.getAttribute(); 获取属性值
element.innerHTML(后面加等号就是设置,后面不加等号就是获取);
element.insertBefore(); 给当前元素前面追加兄弟元素
element.lastChild(); 获取当前元素下的最后一个子节点
element.setAttribute();给元素设置属性

还有两个很重要的:

创建文本节点: document.createTextNode();
创建元素节点: document.createElement();

<body>
	<input type="button" value="添加新学生" id="btn"/>
	<ul id="ul1">
		<li>小红</li>
		<li>小海</li>
		<li>小明</li>
	</ul>
</body>
JavaScript中代码是这样的:

<script>
	window.onload = function(){
		document.getElementById("btn").onclick = function(){
			//1.获取ul元素节点
			var ulEle = document.getElementById("ul1");
			//2.创建学生文本节点
			var textNode = document.createTextNode("小东");//这时候结果是:   小东
			//3.创建li元素节点
			var liEle = document.createElement("li");//这时候的结果是:   <li></li>
			//4.将学生文本节点添加到li元素节点中去
			liEle.appendChild(textNode);//这时候的结果是:   <li>小东</li>
			//5.将li添加到ul中去
			ulEle.appendChild(liEle);//这时候在列表的最后一项添加了   小东
		}
	}
</script>










  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值