JavaScript之 ------ 综合应用

Posted 饿狼干爹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript之 ------ 综合应用相关的知识,希望对你有一定的参考价值。


一、列表菜单

1、实现功能:点击菜单,显示菜单下的内容,再次点击,隐藏内容

注:把height+overflow样式同时设在<d1>能够解决菜单块显示重叠问题

<span style="font-size:14px;"><!DOCTYPE html>
<html>
    <head>
    	<title>演示列表菜单</title>
		<style type="text/css">
			dd
				margin:0px;
			
			dl
				height:16px;
				overflow:hidden;
			
			
			.open
				height:90px;
				overflow:visible;
			
			.close
				height:16px;
				overflow:hidden;
			
			
		</style>
		
        <script type="text/javascript">
        	var flag = true;
			function list(x)
				//alert("aa");
				var oDlNode = document.getElementsByTagName("dl")[x];
				if(flag)
				   oDlNode.style.overflow="visible";//这种单独设置overflow样式,会出现菜单块重叠的问题
				   flag=false;
				else
					oDlNode.style.overflow="hidden";
					flag=true;
				
			
        
        </script>
    </head>
    <body>
    	<dl>
    		<dt οnclick="list(0)">菜单条1</dt>
			<dd>菜单项1</dd>
			<dd>菜单项2</dd>
			<dd>菜单项3</dd>
			<dd>菜单项4</dd>
    	</dl>
		<dl>
    		<dt οnclick="list(1)">菜单条2</dt>
			<dd>菜单项1</dd>
			<dd>菜单项2</dd>
			<dd>菜单项3</dd>
			<dd>菜单项4</dd>
    	</dl>
		<dl>
    		<dt οnclick="list(2)">菜单条3</dt>
			<dd>菜单项1</dd>
			<dd>菜单项2</dd>
			<dd>菜单项3</dd>
			<dd>菜单项4</dd>
    	</dl>
		
		
		
		<!-- -------------------------   -->
		<script type="text/javascript">
        	function list2( oDtNode )
				//alert(oDlNode.className);
				//alert(oDlNode.nodeName);
				var oDlNode = oDtNode.parentNode;
				if(oDlNode.className=="open")
				   oDlNode.className = "close";//而这种high+overflow的方式可以解决菜单块重叠的问题
				else
					oDlNode.className = "open";
				
			
        
        </script>
		<hr/>
		
		<dl>
    		<dt οnclick="list2(this)">菜单条1</dt>
			<dd>菜单项1</dd>
			<dd>菜单项2</dd>
			<dd>菜单项3</dd>
			<dd>菜单项4</dd>
    	</dl>
		<dl>
    		<dt οnclick="list2(this)">菜单条2</dt>
			<dd>菜单项1</dd>
			<dd>菜单项2</dd>
			<dd>菜单项3</dd>
			<dd>菜单项4</dd>
    	</dl>
		<dl>
    		<dt οnclick="list2(this)">菜单条3</dt>
			<dd>菜单项1</dd>
			<dd>菜单项2</dd>
			<dd>菜单项3</dd>
			<dd>菜单项4</dd>
    	</dl>
		
    </body>
</html>
</span>
结果:

2、实现功能:在1的基础上,通过表格封装菜单,且同时只能打开一个菜单块

<span style="font-size:14px;"><!DOCTYPE html>
<html>
    <head>
        <title>演示列表菜单</title>
        <style type="text/css">
			ul
			    list-style:none;
				margin:0px;
				padding:0px;
				display:none;
			
			table
				border:#8080ff solid 1px;
				width:80px;
			
			table td a:link, table td a:visited
				text-decoration:none;
				color:#8080FF;
			
			.open
				display:block;
			
			.close
				display:none;
			
        </style>
        <script type="text/javascript">
        	function list( node )
				var oTdNode = node.parentNode;
				var oUlNode = oTdNode.getElementsByTagName("ul")[0];
				
				//获取表格对象
				var oTabelNode = document.getElementById("tableFriends");
				var colUlNodes = oTabelNode.getElementsByTagName("ul");
				for(var x=0; x<colUlNodes.length; x++)
					/*
					if(colUlNodes[x]==oUlNode)
						if(oUlNode.className=="open")
							oUlNode.className="close";
						else
							oUlNode.className="open";
						
					else
						colUlNodes[x].className="close";
					
					*/
					if(colUlNodes[x]==oUlNode && oUlNode.className!="open" )
						oUlNode.className="open";
					else
						colUlNodes[x].className="close";
					
				
				
			
        
        </script>
    </head>
    <body>
       <table id="tableFriends">
          <tr>
        	 <td>
        	 	<a href="javascript:void(0)" οnclick="list(this)">好友菜单</a>
        		<ul>
        	       <li>一个好友1</li>
			       <li>一个好友2</li>
			       <li>一个好友3</li>
			       <li>一个好友4</li>
                </ul>
        	</td>
          </tr>
          <tr>
        	 <td>
        	 	<a href="javascript:void(0)" οnclick="list(this)">同事菜单</a>
        		<ul>
        	       <li>一个同事1</li>
			       <li>一个同事2</li>
			       <li>一个同事3</li>
			       <li>一个同事4</li>
                </ul>
        	</td>
          </tr>
          <tr>
        	 <td>
        	 	<a href="javascript:void(0)" οnclick="list(this)">黑友菜单</a>
        		<ul>
        	       <li>一个黑友1</li>
			       <li>一个黑友2</li>
			       <li>一个黑友3</li>
			       <li>一个黑友4</li>
                </ul>
        	</td>
          </tr>
          <tr>
        	 <td>
        	 	<a href="javascript:void(0)" οnclick="list(this)">黑友菜单</a>
        		<ul>
        	       <li>一个黑友1</li>
			       <li>一个黑友2</li>
			       <li>一个黑友3</li>
			       <li>一个黑友4</li>
                </ul>
        	</td>
          </tr>
	   </table>
    </body>
</html>
</span>
现象:

3、实现功能:鼠标放在菜单条上时,显示菜单块,离开菜单条和菜单块时,隐藏菜单块,且鼠标放的行有颜色变化

<span style="font-size:14px;"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <title>演示列表菜单</title>
		<style type="text/css">
			#newsid ul
				list-style:none;
			
			#newslist li
				float:left;
				width:180px;
			
			#newslist li ul
				margin:0px;
				padding:0px;
				display:none;
			
			#newslist li ul li
				line-height:25px;
			
			#newslist li a
				display:block;
				text-decoration:none;
				color:#ffffff;
				background-color:#0000ff;
				line-height:25px;
				text-align:center;
			
			#newslist li a:hover
				color:#06c;
				background-color:#cccccc;
			
		</style>
		<script type="text/javascript">
			function list(node)
				//var pNode=node;
				var ulNode=node.getElementsByTagName("ul")[0];
				with(ulNode.style)
					display=(display=="block")?"none":"block";
				
			
		</script>
    </head>
    <body>
        <div id="newsid">
            <ul id="newslist">
                <li οnmοuseοver="list(this)";  οnmοuseοut="list(this)">
                    <a href="javascript:void(0)">csdn新闻</a>
                    <ul>
                        <li>
                            <a href="http://www.baidu.com">csdn新闻内容摘要</a>
                        </li>
                        <li>
                            <a href="http://www.baidu.com">csdn新闻内容摘要</a>
                        </li>
                        <li>
                            <a href="http://www.baidu.com">csdn新闻内容摘要</a>
                        </li>
                        <li>
                            <a href="http://www.baidu.com">csdn新闻内容摘要</a>
                        </li>
                        <li>
                            <a href="http://www.baidu.com">csdn新闻内容摘要</a>
                        </li>
                    </ul>
                </li>
                <li οnmοuseοver="list(this)";  οnmοuseοut="list(this)">
                    <a href="javascript:void(0)">大学新闻</a>
                    <ul>
                        <li>
                            <a href="http://www.baidu.com">大学新闻内容摘要</a>
                        </li>
                        <li>
                            <a href="http://www.baidu.com">大学新闻内容摘要</a>
                        </li>
                        <li>
                            <a href="http://www.baidu.com">大学新闻内容摘要</a>
                        </li>
                        <li>
                            <a href="http://www.baidu.com">大学新闻内容摘要</a>
                        </li>
                        <li>
                            <a href="http://www.baidu.com">大学新闻内容摘要</a>
                        </li>
                    </ul>
                </li>
                <li οnmοuseοver="list(this)";  οnmοuseοut="list(this)">
                    <a href="javascript:void(0)">社会新闻</a>
                    <ul>
                        <li>
                            <a href="http://www.baidu.com">社会新闻内容摘要</a>
                        </li>
                        <li>
                            <a href="http://www.baidu.com">社会新闻内容摘要</a>
                        </li>
                        <li>
                            <a href="http://www.baidu.com">社会新闻内容摘要</a>
                        </li>
                        <li>
                            <a href="http://www.baidu.com">社会新闻内容摘要</a>
                        </li>
                        <li>
                            <a href="http://www.baidu.com">社会新闻内容摘要</a>
                        </li>
                    </ul>
                </li>
                <li οnmοuseοver="list(this)";  οnmοuseοut="list(this)">
                    <a href="javascript:void(0)">就业新闻</a>
                    <ul>
                        <li>
                            <a href="http://www.baidu.com">就业新闻内容摘要</a>
                        </li>
                        <li>
                            <a href="http://www.baidu.com">就业新闻内容摘要</a>
                        </li>
                        <li>
                            <a href="http://www.baidu.com">就业新闻内容摘要</a>
                        </li>
                        <li>
                            <a href="http://www.baidu.com">就业新闻内容摘要</a>
                        </li>
                        <li>
                            <a href="http://www.baidu.com">就业新闻内容摘要</a>
                        </li>
                    </ul>
                </li>
            </ul>
        </div>
    </body>
</html>
</span>
现象:


二、快捷设置文本字体

实现功能:将文字设置为超链接,用来设置文本的字体

1、通过获取文本的节点,单独设置样式中的字体和颜色

2、通过获取文本的节点,设置此节点的className,与导进的css样式中的通过className方式设置的样式对应起来,从而实现对文本的字体设置

<span style="font-size:14px;"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<title>News Font</title>
		<style type="text/css">
			div
				border:#ff8040 solid 1px;
				width:800px;
				padding:30px;
				margin:10px;
			
		</style>
		<link rel=stylesheet href="div.css" type="text/css">
		<script type="text/javascript">
			function changeFont(size,textcolor)//1
				var oNewstext = document.getElementById("newsText");
				oNewstext.style.fontSize=size+"px";
				oNewstext.style.color=textcolor;
			
			function changeFont2(strClassName)//2
				//alert("aa");
				var oNewstext2 = document.getElementById("newsText");
				oNewstext2.className=strClassName;
			
		</script>
	</head>
	<body>
		<h1>这是一个新闻标题</h1>
		<hr/>
		<a href="javascript:void(0)" οnclick="changeFont(28,'red')">大字体</a>
		<a href="javascript:void(0)" οnclick="changeFont(24,'blue')">中字体</a>
		<a href="javascript:void(0)" οnclick="changeFont(20,'green')">小字体</a>
		<a href="javascript:void(0)" οnclick="changeFont2('max')">max</a>
		<a href="javascript:void(0)" οnclick="changeFont2('norm')">norm</a>
		<a href="javascript:void(0)" οnclick="changeFont2('min')">min</a>
		<div id="newsText" class="max">
			(本网讯)  9 月29 日 下午2点半,在教职工活动中心召开了学校教职工羽毛球队成立会,副校长、工会主席郑卫民、工会、教职工羽毛球队教练及全体队员参加会议。全校在职工会会员均可报名参加,本次共选拔男女队员各8名共16人组成教职工羽毛球队。  
        在宣布了队员名单及组织学习了《关于成立教职工羽毛球队的方案》后,现场颁发了羽毛球队教练、队长和副队长聘书。 
       </div>
	</body>
</html>
</span>
结果:


三、对表格的一些操作(创建,删除,设置颜色,排序等)

1、创建表格

1)通过DOM树模型,一层一层的建立表格 ------ 最底层的创建方式,费劲,但功能很强

2)利用table中的现有的功能实现的

注:表格的,<table>标签和<tr>标签中间,其实还隐藏着一个<tbody>标签----表格体

<span style="font-size:14px;"><!DOCTYPE html>
<html>
    <head>
        <title>演示列表菜单</title>
        <style type="text/css">
        	table
        		border: #249bdb 1px solid;
				width:600px;
				border-collapse:collapse;
        	
            td
            	border: #249bdb 1px solid;
				padding:5px;
            
        </style>
        <script type="text/javascript">
        	//方式1:最底层的创建方式,费劲,但功能很强
        	function createTable()
				//利用document.createElement()创建元素的形式来进行
				//先创建各标签元素
				var oTableNode = document.createElement("table"); //<table>
				var oTbodyNode = document.createElement("tbody");//<tbody>
				var oTrNode = document.createElement("tr");//<tr>
				var oTdNode = document.createElement("td");//<td>
				//把上面的这些标签元素组合成一棵对象树---table子树
				oTrNode.appendChild(oTdNode);
				oTbodyNode.appendChild(oTrNode);
				oTableNode.appendChild(oTbodyNode);
				document.getElementById("div0").appendChild(oTableNode);
			
			
			//方式2:利用“table对象”中的现有功能来实现
			//函数:createCaption、createTFoot、createTHead、deleteCaption、deleteRow、insertRow
			//集合:cells,rows
			function createTable2()
				var oTableNode = document.createElement("table");
				var oTrNode = oTableNode.insertRow();
				var oTdNode = oTrNode.insertCell();
				oTdNode.innerHTML="一个新单元格";
				
				document.getElementById("div0").appendChild(oTableNode);
			
			
			//添加5行6列
			function createTable3()
				var oTableNode = document.createElement("table");
				for(var x=0;x<5;x++)
					var oTrNode = oTableNode.insertRow();
					for(var y=0;y<6;y++)
				        var oTdNode = oTrNode.insertCell();
				        oTdNode.innerHTML="单元格"+(x+1)+"-"+(y+1);
					
				
				
				document.getElementById("div0").appendChild(oTableNode);
			
			
			
        </script>
    </head>
    <body>
    	<input type="button" value="创建表格1" οnclick="createTable()"/>
    	<br>
		<input type="button" value="创建表格2" οnclick="createTable2()"/>
    	<br>
		<input type="button" value="创建表格:5行6列" οnclick="createTable3()"/>
		<hr/>
		<div id="div0"> </div>
    </body>
</html>
</span>
结果:

2、灵活创建和删除(也就是按给定的行列进行创建和删除)

<span style="font-size:14px;"><!DOCTYPE html>
<html>
    <head>
        <title>演示列表菜单</title>
        <style type="text/css">
        	table
        		border: #249bdb 1px solid;
				width:600px;
				border-collapse:collapse;
        	
            td
            	border: #249bdb 1px solid;
				padding:5px;
            
        </style>
        <script type="text/javascript">
        	//添加5行6列
			function createTable3()
				var oTableNode = document.createElement("table");
				for(var x=0;x<5;x++)
					var oTrNode = oTableNode.insertRow();
					for(var y=0;y<6;y++)
				        var oTdNode = oTrNode.insertCell();
				        oTdNode.innerHTML="单元格"+(x+1)+"-"+(y+1);
					
				
				
				document.getElementById("div0").appendChild(oTableNode);
				document.getElementById("crtBtn").disabled=true;
			
			
			//10.6日开始的代码
			function createTable4()
				var oTableNode = document.createElement("table");
				//为动态创建的table设置id属性,为了方便后面对创建的table进行操作
				//oTableNode.id = "tableid";//法1
				oTableNode.setAttribute("id","tableid");//法2
				
				var rowValue = parseInt( document.getElementsByName("rowNum")[0].value );
				
				//特判,卫条件
				if(isNaN(rowValue) || rowValue<=0 )
					alert("行号格式错误!");
					return;
				
				var colValue = parseInt( document.getElementsByName("colNum")[0].value );
				if(isNaN(colValue) || colValue<=0)
					alert("列号格式错误!");
					return;
				
								
				for(var x=0;x<rowValue;x++)
					var oTrNode = oTableNode.insertRow();
					for(var y=0;y<colValue;y++)
				        var oTdNode = oTrNode.insertCell();
				        oTdNode.innerHTML="单元格"+(x+1)+"-"+(y+1);
					
				
				
				document.getElementById("div0").appendChild(oTableNode);
				document.getElementById("crtBtn2").disabled=true;
			
			
			function delRow()
				var oTableNode = document.getElementById("tableid");
				if(oTableNode==null)
					alert("表格不存在,无法进行删除操作!");
					return;
				
				
				var rowValue = parseInt( document.getElementsByName("rowNum2")[0].value );
				//特判,卫条件
				if( isNaN(rowValue) )
					alert("行号格式错误!");
					return;
				
				
				if(rowValue>=1 && rowValue<=oTableNode.rows.length)
					oTableNode.deleteRow(rowValue-1);
				else
					alert("要删除的行不存在!")
				
			
			
			function delCol()
				var oTableNode = document.getElementById("tableid");
				if(oTableNode==null)
					alert("表格不存在,无法进行删除操作!");
					return;
				
				
				var colValue = parseInt( document.getElementsByName("colNum2")[0].value );
				//特判,卫条件
				if( isNaN(colValue) )
					alert("列号格式错误!");
					return;
				
				
				if(!(colValue>=1 && colValue<=oTableNode.rows[0].cells.length) )
					alert("要删除的行不存在!")
					return;
				
				
				//真正的删除列动作
				for(var x=0; x<oTableNode.rows.length; x++)
					oTableNode.rows[x].deleteCell(colValue-1);
				

			
			
        </script>
    </head>
    <body>
    	<input id="crtBtn" type="button" value="创建表格:5行6列" οnclick="createTable3()"/>
		<br/>
		行:<input type="text" name="rowNum" /> 列:<input type="text" name="colNum"/>
    	<input id="crtBtn2" type="button" value="创建表格" οnclick="createTable4()"/>
		
		<br/>
		行号:<input type="text" name="rowNum2" /> <input id="delBtn" type="button" value="删除行" οnclick="delRow()"/><br>
		列号:<input type="text" name="colNum2"/><input id="delBtn" type="button" value="删除列" οnclick="delCol()"/><br>
    	
		<hr/>
		<div id="div0"> </div>
    </body>
</html>
</span>
结果:

3、设置颜色和排序

1)颜色:通过奇偶行号,设置不同的两种颜色,且鼠标放上后变为第三种颜色,离开后恢复原来颜色

2)排序:通过点击表格中的年龄项,表格中的内容通过年龄的大小,进行排序,且年龄项做出相应的变化

<span style="font-size:14px;"><!DOCTYPE html>
<html>
    <head>
        <title>演示表格排序</title>
        <link rel="stylesheet" type="text/css" href="table.css">
        
		<style type="text/css">
			.one
				background-color:#00FF00;
			
			.two
				background-color:#8080FF;
			
			.over
				background-color:#FFFFFF;
				font-size:16px;  /*常识:网页当中默认字体大小是16px*/
			
			
			th a:link, th a:visited
				color:#FF0000;
				text-decoration:none;
			
			
		</style>
		<script type="text/javascript">
	    	var name; //函数外面定义,才是全局的变量
			function trColor()
				     //alert("aa");
				//1获得table对象
				var oTableNode = document.getElementById("info");
				     //alert(oTableNode.nodeName);
				//2获得table中的rows集合
				var collTrs = oTableNode.rows;
				     //alert(collTrs.length);
				//3遍历rows集合,为每一个元素(行对象)添加class属性
				for(var x=1; x<collTrs.length; x++)
					if(x%2==1)
						collTrs[x].className = "one"; //属性
					else
						collTrs[x].className = "two";
					
					
					//※为每一个<tr>对象注册事件
					collTrs[x].οnmοuseοver=function() //事件
					    //必须用 this 才能指代当前的行对象collTrs[x]
						name = this.className; //备份高亮之前的样式
						this.className = "over";
					
					collTrs[x].οnmοuseοut=function() //事件
					    //必须用 this 才能指代当前的行对象collTrs[x]
						this.className = name;//用高亮之前备份的样式,进行恢复
					
				
			
			
	    	//onload = trColor();//解析时就调用了,导致效果没出来!!!!!!---因为解析该语句时,body中的table还没有加载
			
			//解析时并没有调用,要等到onload事件发生时才会调用里面的功能,此时body中的table已经加载完,因此有效
			//该写法还有一个好处:在function()内部还可以调用其它函数或写其它执行语句
			onload = function()
				trColor();
			
			function over(trNode)
				trNode.className="over";
			
			
			//表格排序
			var flag=true;
			function sortTable(aNode)
				var oTabeNode = document.getElementById("info");
				var collTrs = oTabeNode.rows;
				
				//定义一个临时容器,存储要排序的行对象。并且要从原集合中拷贝一份独立的数据出来,进行排序
				var trArr =[];
				for(var x=1;x<collTrs.length;x++ )//注意,表表不需要排序,因此从1开始
					trArr[x-1] = collTrs[x];
				
				//排序
				mySort(trArr);//trArr[]中的每个元素是一个行对象
				
				if(flag)
					for(var x=0;x<trArr.length;x++)
					   trArr[x].parentNode.appendChild(trArr[x]);
					
					aNode.innerHTML = "年龄↑";
				else
					for(var x=trArr.length-1;x>=0;x--)
					   trArr[x].parentNode.appendChild(trArr[x]);
					
					aNode.innerHTML = "年龄↓";
				
				flag=!flag;
				
				trColor();
			
			
			function mySort( arr )
				for(var x=0; x<arr.length-1; x++)
					for(var y=x+1;y<arr.length; y++)
						if(parseInt(arr[x].cells[1].innerHTML) > parseInt(arr[y].cells[1].innerHTML) )
							//arr[x].swapNode(arr[y]);//没有成功
							var temp=arr[x]; arr[x]=arr[y]; arr[y]=temp;
						
					
				
			
			
			
        </script>
	   
    </head>
    <body>
    	<table id="info">
    		<tr> <th>姓名</th>
			<th>   <a href="javascript:void(0)" οnclick="sortTable(this)">年龄</a>    </th> 
			<th>地址</th> </tr>
    		
			<tr> <td>张三</td> <td>25</td> <td>湖南长沙</td> </tr>
			<tr> <td>张4</td> <td>26</td> <td>湖南长沙</td> </tr>
			<tr> <td>张5</td> <td>23</td> <td>湖南益阳</td> </tr>
			<tr> <td>李小</td> <td>24</td> <td>美国华盛顿</td> </tr>
			<tr> <td>Jack</td> <td>28</td> <td>伦敦</td> </tr>
			<tr> <td>张2222</td> <td>16</td> <td>湖南长沙</td> </tr>
			<tr> <td>张3333</td> <td>13</td> <td>湖南益阳</td> </tr>
			<tr> <td>李小222</td> <td>14</td> <td>美国华盛顿</td> </tr>
			<tr> <td>Jack222</td> <td>18</td> <td>伦敦</td> </tr>
			
    	</table>
    </body>
	 
</html>
</span>



结果:


四、选择框的应用(类似如邮件管理)

实现功能:类似如邮箱中对邮件的管理:

选择邮件,删除邮件,全选,反选,取消全选等

<span style="font-size:14px;"><!DOCTYPE html>
<html>
    <head>
        <title>演示复选框组件的操纵</title>
		<link rel="stylesheet" type="text/css" href="table.css"/>
		<style type="text/css">
			.one
				background-color:#00FF00;
			
			.two
				background-color:#FF8040;
			
			.over
				background-color:#CCCCCC;
			
		</style>
		
		<script type="text/javascript">
			function checkAll(node)
				var collMailNodes = document.getElementsByName("mail");
				for(var x=0; x<collMailNodes.length; x++)
					collMailNodes[x].checked= node.checked;
				
				
				var collMailNodes2 = document.getElementsByName("allMail");
				for(var x=0; x<collMailNodes2.length; x++)
					collMailNodes2[x].checked= node.checked;
				
			
			
			function trColor()
				var oTableNode = document.getElementById("info");
				var collTrs = oTableNode.rows;
				for(var x=1; x<collTrs.length; x++)
					if(x%2==1)
						collTrs[x].className = "one";
					else
						collTrs[x].className = "two";
					
				
			
			
			var name;
			function trAddEvent()
				var oTableNode = document.getElementById("info");
				var collTrs = oTableNode.rows;
				for(var x=1; x<collTrs.length; x++)
					//给每一个<tr>对象注册一下鼠标over和out事件
					collTrs[x].onmouseover = function()
						name = this.className;
						this.className = "over";
					
					collTrs[x].onmouseout = function()
						this.className = name;
					
					
					collTrs[x].getElementsByTagName("input")[0].οnclick= function()
						//alert("aa");
						document.getElementsByName("allMail")[0].indeterminate=true;
					
				
			
			
			
			onload = function()
				trColor();
				trAddEvent();
			
			
			function checkAllByBtn(num)
				var collMailNodes = document.getElementsByName("mail");
				for(var x=0; x<collMailNodes.length; x++)
					/*
					if(num==1)
						collMailNodes[x].checked = true; //非0
					else if(num==0)
						collMailNodes[x].checked = false;//0
				    else if(num==2)
						collMailNodes[x].checked =!(collMailNodes[x].checked);
					
					*/
					if(num<2)
						collMailNodes[x].checked = num;
					else
						collMailNodes[x].checked =!(collMailNodes[x].checked);
					
				
			
			
			function deleteMail()
				
				var collMailNodes = document.getElementsByName("mail");
				//如果倒着删,那么就不需要修正索引x了
				for(var x=0; x<collMailNodes.length; x++)
					if(collMailNodes[x].checked)
						//我们现在手上拿的是	collMailNodes[x],它是一个checkbox对象。那么要删除该checkbox所在的行,必须通过它拿到相应的<tr>对象。然后才能进行删除
						//获取<tr>对象
						var oTrNode = collMailNodes[x].parentNode.parentNode;
						//删除行节点
						oTrNode.parentNode.removeChild(oTrNode);
						
						//节点容器跟Java当中的集合一样,只要是remove(),长度就会变的。这里,需要进行x的复位
						x--;
					
				
				trColor();
			
			
		</script>		
		
    </head>
    <body>
	<table id="info">
		<tr> <th><input type="checkbox" name="allMail" οnclick="checkAll(this)" /> 全选 </th> <th>发件人</th>  <th>邮件标题</th> <th>邮件附属信息</th></tr>
		<tr> <td><input type="checkbox" name="mail" /> </td> <td>张三</td>  <td>国庆祝福</td> <td>邮件附属信息1....</td></tr>
		<tr> <td><input type="checkbox" name="mail" /> </td> <td>Jack1</td>  <td>假期堵车</td> <td>邮件附属信息2....</td></tr>
		<tr> <td><input type="checkbox" name="mail" /> </td> <td>Jack2</td>  <td>假期堵车</td> <td>邮件附属信息3....</td></tr>
		<tr> <td><input type="checkbox" name="mail" /> </td> <td>Jack3</td>  <td>假期堵车</td> <td>邮件附属信息4....</td></tr>
		<tr> <td><input type="checkbox" name="mail" /> </td> <td>Jack4</td>  <td>假期堵车</td> <td>邮件附属信息5....</td></tr>
		<tr> <td><input type="checkbox" name="mail" /> </td> <td>Tom1</td>  <td>一些广告</td> <td>邮件附属信息6....</td></tr>
		<tr> <td><input type="checkbox" name="mail" /> </td> <td>Tom2</td>  <td>一些广告</td> <td>邮件附属信息6....</td></tr>
		<tr> <td><input type="checkbox" name="mail" /> </td> <td>Tom3</td>  <td>一些广告</td> <td>邮件附属信息6....</td></tr>
		<tr> <td><input type="checkbox" name="mail" /> </td> <td>Tom4</td>  <td>一些广告</td> <td>邮件附属信息6....</td></tr>
		
		<tr>
			 <th> <input type="checkbox" name="allMail" οnclick="checkAll(this)"/> 全选 </th>  
		     <th colspan="3">
		     	<input type="button" value="全选" οnclick="checkAllByBtn(1)"/>
		     	<input type="button" value="取消全选"  οnclick="checkAllByBtn(0)"/>
		     	<input type="button" value="反选" οnclick="checkAllByBtn(2)" />
		     	<input type="button" value="删除所选邮件"  οnclick="deleteMail()"/>
		     </th>
		</tr>
	</table>
	<br/><br/><br/><br/><br/><br/><br/><br/>
	</body>
	 
</html>
</span>
结果:

五、正则表达式的应用(用户注册)

通过正则表达式实现用户注册页面

1、正则表达式定义法1

var reg = /^[0-9]6$/; //必须是6个数字,而且必须是6个。多了或少了都不行。

2、正则表达式定义法2

var reg = new RegExp("^[0-9]6$"); 

3、细节
var reg = new RegExp("[a-z]4","i");//带参数,只要包含连续4个字母就行,忽略大小写

var reg = new RegExp("^[a-z]4","i");//带参数,必须以连续4个字母开始,忽略大小写

var reg = new RegExp("^[a-z]4$","i");//带参数,有且只有连续4个字母,忽略大小写

var reg = / ^\\d6$ /;  //特殊符号不需要转义,外面也不用加引号

3、表单的提交

<span style="font-size:14px;">function mySubmit()
				var oFormNode = document.getElementById("userForm");
				oFormNode.submit();//直接利用<form>对象当中的submit()方法进行手动提交	
				
				/* 以后开发时应该写成下面的框架,只有各组件的数据输入都合法,才手动提交
				if( checkUser() )
				   oFormNode.submit();	
				
				*/
				</span>

5、源代码

<span style="font-size:14px;"><!DOCTYPE html>
<html>
    <head>
        <title>演示用正则表达式来验证表单中的数据</title>
		<style type="text/css">
		
		</style>
		
		<script type="text/javascript">
			function check(name,reg,spanId,okInfo,erroInfo)
				var oUserNode = document.getElementsByName(name)[0]; //※psw  ----name
				var name = oUserNode.value;
				
				var oUserSpanNode = document.getElementById(spanId); //※pswspan -----spanId
				if( reg.test(name) )//验证
					oUserSpanNode.innerHTML = okInfo.fontcolor("green");  //※"该密码安全度适中"  ----okInfo
					return true;
				else
					oUserSpanNode.innerHTML = erroInfo.fontcolor("red");//※"密码长度至少要6位数字!请重新输入" ----erroInfo
					return false;
				
			
			
			function checkUser()
				var reg = new RegExp("^[a-z]4","i");//带参数,必须以连续4个字母开始,忽略大小写
				return check("user",reg,"userspan","恭喜,该用户名可以注册","抱歉,该用户名已经存在!请换一个名字");
			
		
		    function checkPsw()
				var reg = new RegExp("^[0-9]6"); //※正则表达式
				return check("psw",reg,"pswspan","该密码安全度适中,可以使用","密码长度至少要6位数字!请重新输入");
			
			
			function checkMail()
				var reg = /^\\w+@\\w+(\\.\\w+)+$/i;
				return check("mail",reg,"mailspan","邮箱地址格式正确","邮箱地址错误!");
			
			
			function checkPsw2() //验证psw1 和 psw2 当中的数据是否一致
				var psw = document.getElementsByName ("psw")[0].value;
				var psw2 = document.getElementsByName ("psw2")[0].value;
				var oPsw2SpanNode = document.getElementById("psw2span");
				//可以考虑先进行trim
				if(psw==psw2)
					oPsw2SpanNode.innerHTML = "两次密码一致!".fontcolor("green");
					return true;
				else
					oPsw2SpanNode.innerHTML = "两次密码不一致,请重新输入!".fontcolor("red");
					return false;
				
			
			
			function checkForm()
				if(checkUser() && checkPsw() && checkPsw2() &&checkMail() )
					return true;
				
				return false;
			
		
		</script>
		
		
    </head>
    <body>
    	<h2>用户注册</h2>
		<form id="userinfo" action="" οnsubmit="return checkForm()">
			用户名称:<input type="text" name="user" οnblur="checkUser()">
			 <span id="userspan"></span><br/>
			 
			输入密码:<input type="text" name="psw" οnblur="checkPsw()">
			 <span id="pswspan"></span><br/>
			 
			确认密码:<input type="text" name="psw2" οnblur="checkPsw2()">
			 <span id="psw2span"></span><br/>
			 
			邮箱地址:<input type="text" name="mail" οnblur="checkMail()">
			 <span id="mailspan"></span><br/>
			 
			<input type="submit" value="注册">
		</form>
		
	<br/><br/><br/><br/><br/><br/>
	</body>
	 
</html>
</span>
结果:

六、下拉框的应用(设置字体颜色、两个下拉框的对应)

1、设置字体颜色

<!DOCTYPE html>
<html>
    <head>
        <title>演示下拉组合框组件的操纵</title>
		<style type="text/css">
			.clrClass
				height:50px;
				width:50px;
				margin-right:30px;
				margin-bottom:30px;
				float:left;
						
		</style>
		
		<script type="text/javascript">
			function changeColor(node)
				var colorValue = node.style.backgroundColor;
				document.getElementById("text").style.color=colorValue;
			
			
			function changeColor2()
				var oSelectNode= document.getElementsByName("selectColor")[0];
				var colorValue = oSelectNode.value;
				//alert(colorValue);
				document.getElementById("text").style.color=colorValue;
				
				//有关select组件的一些功能演示:手动获取组合框当中的相关信息
				var collOptionNodes = oSelectNode.options;//所有的选项集合 
				/*
				 for(var x=0; x<collOptionNodes.length; x++)
					alert(collOptionNodes[x].innerHTML);
				
				*/
				//可以通过select对象获得用户当前所选择的选项序号
				//alert(oSelectNode.selectedIndex);
				//alert(collOptionNodes[oSelectNode.selectedIndex].innerHTML);
			
		</script>		
		
    </head>
    <body>
    	<div id="clr1" class="clrClass" style="background-color:red" οnclick="changeColor(this)"></div>
    	<div id="clr2" class="clrClass" style="background-color:green"  οnclick="changeColor(this)"></div>
    	<div id="clr3" class="clrClass" style="background-color:blue"  οnclick="changeColor(this)"></div>
		<hr style="clear:left"/>
		<div id="text">
			显示效果文字<br/>
			显示效果文字<br/>
			显示效果文字<br/>
			显示效果文字<br/>
		</div>
		
		<hr/>
		<!--
		<select name="selectColor" οnclick="changeColor2()">
		-->
		<select name="selectColor" οnchange="changeColor2()">
		    <option style="background-color:black" value="black">--选择颜色--</option>
		    <option style="background-color:red" value="red"></option>
		    <option style="background-color:green" value="green">绿色</option>
		    <option style="background-color:blue" value="blue">蓝色</option>		
		</select>
	
		
	<br/><br/><br/><br/><br/><br/><br/><br/>
	</body>
	 
</html>
结果:

2、两个下拉框之间的对应

<!DOCTYPE html>
<html>
    <head>
        <title>演示下拉组合框组件的二级联动</title>
		<style type="text/css">
		</style>
		
		<script type="text/javascript">
			function selectCity()
				var collCites = [['选择城市'],
				                 ['东城区','西城区','海滨区','朝阳区'],
								 ['益阳','长沙','娄底','株洲'],
								 ['金华','杭州','温州','宁波'],
								 ['南昌','九江','萍乡','上饶']
								 
				];
				//获取两个组合框(下拉菜单)
				var oSelNode = document.getElementById("selid");
				var oSubSelNode = document.getElementById("subselid");
				
				//要先清空组合框中原来的选项,才能再添加。否则新选项会一直追加到后面
				/*法1
				var len = oSubSelNode.options.length;
				for(var x=1; x<len;x++)
					oSubSelNode.removeChild(oSubSelNode.options[1]);
				
				*/
				//法2
				oSubSelNode.length =1;
				
				var index = oSelNode.selectedIndex;//获得用户在省份组合框所选的选项序号
				var arrCities = collCites[index];
				for(var x=0; x<arrCities.length; x++)
					var oOptionNode = document.createElement("option");
					oOptionNode.innerHTML=arrCities[x];
					oSubSelNode.appendChild(oOptionNode);
				
				
			
		
		</script>		
		
    </head>
    <body>
	<select id="selid" οnchange="selectCity()">
		<option>选择省市</option>
		<option>北京</option>
		<option>湖南</option>
		<option>浙江</option>
		<option>江西</option>
	</select>
	<select id="subselid">
		<option>选择城市</option>
	</select>
		
	<br/><br/><br/><br/><br/><br/><br/><br/>
	</body>
	 
</html>

现象:



以上是关于JavaScript之 ------ 综合应用的主要内容,如果未能解决你的问题,请参考以下文章

卓豪助力青海大学附属医院实现密码统一管理

Zabbix监控之不发送邮件异常附属

一个不用写javascript的ext综合应用

javascript --- 原型继承与属性拷贝的综合应用

Win10系列:JavaScript综合实例1

综合运用之拖动模态框案例