Javascript示例

------- android培训java培训、期待与您交流! ----------

1.1  Tip:DOM编程:

 

1. 定义界面:

        通过html的标签将数据进行封装

2. 定义一些静态的样式:

        通过css

3. 需要动态的完成和用户的交互

        A 先明确事件源

        B 明确事件将时间注册到事件源上

       C 通过javascript的函数对事件进行处理

       D 在处理过程中要明确被处理的区域。(DOM节点)

// JavaScript Document
var doc = document;
function byId(id){
	return doc.getElementById(id);
	}	
function byTag(tagName){
	return doc.getElementsByTagName(tagName);
	}
function byName(name){
	return doc.getElementsByName(name);
	}

 


1.1  Tip:tab标签示例(创建,删除)

需求:

     在页面上通过按钮创建一个表格。并可以通过按钮删除指定的行或列


思路:

1.      创建一个table节点,document.createElement(“table);

2.      通过table节点的insetRow()方法创建表格的行对象添加到rows集合中

3.      通过对象的insertCell方法创建单元格对象,并添加到cells集合中

4.      给单元格添加数据

         A 创建一个节点,如文本节点document.createTextNode(文本内容”);

                通过单元格对象appendChild方法将文本节点添加到单元格的尾部

         B 可以通过单元格的innerHTML添加单元格中的元素

5、 建立好表格节点,添加到DOM树中。

6、 删除行或列

        A删除行:获取表格对象,通过对象中的deleteRow方法,将指定的行索引传入方法中

        B删除列:表格没有直接删除列的方法,通过遍历每一行,然后通过deleteCell方法删除每行的指定列完成删除列的动作。

 

<title>表格</title>

<link rel="stylesheet" href="tabcss.css" />
<script type="text/javascript" src="doctool.js"></script>
<script type="text/javascript">
	
function createTab(){
	var tabNode = doc.createElement("table");
	//tabNode.id = "tabid";
	tabNode.setAttribute("id","tabid");
	
	var row = byName("rownum")[0].value;
	var col = byName("colnum")[0].value;
	
	for(var x=1; x<=row; x++){
		var trNode = tabNode.insertRow();
	  for(var y=1;y<=col;y++)
	  {
		var tdNode = trNode.insertCell();
		//tdNode.insertText= x+"-----"+y;
	  tdNode.innerText = x+"......"+y;
	  }
	//tdNode.insertHTML = "<input type='button' value='按钮'/>";
	
	byTag("div")[0].appendChild(tabNode);
	event.srcElement.disabled=true;
	
	  }
	}

function delRow(){	
	var tabNode = byId("tabid");
	if(tabNode == null)
	{
		alert("表格不存在");
		return ;
		}
	var rownum = byName("delRow")[0].value;
	
	if(rownum>0 && rownum<=tabNode.rows.length)
		tabNode.deleteRow(rownum-1);	
	else
		alert("删除的行不存在");	
}

function delCol(){
	var tabNode = byId("tabid");
	if(tabNode == null)
	{
		alert("表格不存在");
		return ;
	}
	var colnum = byName("delcol")[0].value;
	if(colnum >0 && colnum<=tabNode.rows[0].cells.length)
	{
		for(var x=0; x<tabNode.rows.length; x++)
		{
			tabNode.rows[x].deleteCell(colnum-1);		
		}
	}
	else
		alert("删除的列不存在");
}
</script>
</head>
<body>
行<input type="text" name="rownum"  /><br/>
列<input type="text" name="colnum" /><br/>

<input type="button" value="创建表格" onclick="createTab()" /><br />
<input type="text" name="delrow" />
<input type="button" value="删除行" onclick="delRow()"/><br />
<input type="text" name="delcol" />
<input type="button" value="删除列" onclick="delCol()"/>
<div>
</div>
</body>
</html>

 


1.2  Tip:表格的行颜色的间隔显示,并在鼠标行上高亮显示

 

思路:

1. 获取所有的行对象,将需要间隔颜色显示的行对象进行动态的className属性的指定,那么前提是:先定义好类选择器。

2. 为了完成高亮,需要用到两个事件:onmouseover(鼠标进入)onmouseout(鼠标移出)。

3. 为了方便可以在遍历对象时,将每一个行对象都进行两个属性的指定,并通过匿名函数完成该事件的处理。

4. 高亮的原理就是将鼠标进入时的指定颜色改变,改变前先记录住原先行对象的样式

5. 该样式需要在页面加载完成直接显示,所以使用的window.onload事件完成

<title>高亮显示</title>
</head>


<link rel="stylesheet" href="tab.css" />
<style type="text/css">
.one{
	background-color:#096
	}
.two{
	background-color:#C9C
	}
.over{
	background-color:#F00
	}
</style>
<script type="text/javascript" src="doctool.js"></script>
<script type="text/javascript">
//行颜色间隔显示
function highcolor(){
	var tabNode = byTag("table")[0];
	
	var trs = tabNode.rows;
	
	for(var x = 1; x<trs.length; x++)
	{
		if(x%2==1)		
			trs[x].className = "one";		
		else
			trs[x].className = "two";	
			
		trs[x].onmouseover = function(){
			name = this.className ;
			this.className = "over";
			
			};
			trs[x].onmouseout = function(){
				this.className = name;
		}
	}
}

var name;
function over(trNode){
	name = trNode.className;
	trNode.className= "over";
	}
function out(trNode){
	
	trNode.className = name;
	}
window.onload = highcolor;
</script>
<body>
<table>
    <tbody>
	<tr>
    	<td>姓名</td>
        <td><a href="javascript:void(0)" onclick="sorttab()">年龄</a></td>
        <td>地址</td>
    </tr>
    
    <tr>
    	<td>张飞</td>
        <td>21</td>
        <td>北京</td>
    </tr>
    
    <tr>
    	<td>李斯特</td>
        <td>23</td>
        <td>上海</td>
    </tr>
    
    <tr>
    	<td>舒曼</td>
        <td>35</td>
        <td>南京</td>
    </tr>
    
    <tr>
    	<td>肖邦</td>
        <td>22</td>
        <td>波兰</td>
    </tr>
    
    <tr>
    	<td>李云迪</td>
        <td>26</td>
        <td>香港</td>
    </tr>
   </tbody>
</table>
</body>
</html>

 

1.3  Tip:完成一个与css手册中一样的示例

通过下拉菜单的选择显示指定样式属性的使用效果。

<title>通过下拉菜单选择样式</title>
</head>
<style type="text/css">
#cssid{
	height:80px;
	width:300px;
	background:#FC0
	}
#textid{
	background-color:#999
	width:300px;
	}
</style>
<script type="text/javascript" src="doctool.js"></script>
<script type="text/javascript">

function change(){
	var selNode = byId("selid");
	var value = selNode.options[selNode.selectedIndex].value;
	//alert(value);
	var divNode1 = byId("cssid");
	var divNode2 = byId("textid");
	
	divNode1.style.textTransform = value;
	divNode2.innerText = "text-transform : "+value+";";
	}
</script>
<body>
<div id="cssid">
	Good good study,day day up!
</div>
<p></p>
<div >
<select id="selid" onchange="change()">
  	<option value="none">---text-transform--</option>
    <option value="capitalize">首字母大写</option>
    <option value="uppercase">所有字母大写</option>
    <option value="lowercase">所有字母小写</option>
</select>
</div>

<p></p>
<div id="textid">
	text--transform:none;
</div>
</body>
</html>


1.4  Tip:用户注册表单

1.定义页面

       通过表格来格式化表单。

    表单都有自己的背景颜色

    将单元格的数据通过div进行封装,以便操作

2.定义样式

       表格的样式

   div的样式

3.动态效果

       3.1在页面加载时,给所有的输入框定义默认的框线颜色以及获取焦点时的框线颜色

       3.2进行内容校验,可以通过正则表达式完成,并通过框线的样式给用户提示         

 

<title>注册表单 </title>

<style type="text/css">

table{
	border:#0C6 1px solid;
	width:600px;
	border-collapse:collapse;
	}
table th,table td{	border:#0F0 1px solid;}
table td{	background-color:#FF9;	}
table th{	background-color:#F93;	}	
#repswspan{	margin-left:120px;	}
.errorinfo{	color:#F00;display:none;	}
.focus{	border:#06F 2px solid;	}
.norm{	border:#999 1px solid;	}
.error{	border:#F00 2px solid;	}
</style>
<script type="text/javascript">
function inputColor(input)
{
	input.className = "norm";
	input.onfocus = function(){
		this.className = "focus";
		}
	}
window.onload = function(){
	
	with(document.forms[0])	
	{
		inputColor(user);
		inputColor(psw);
		inputColor(repsw);
		inputColor(mail);
	}
}
function checkUserDemo(userNode){
	var value = userNode.value;
	var regex = /^\w{6,12}$/;
	var divNode = document.getElementById("userdiv");
	
	if(regex.test(value))
	{
		userNode.className = "norm";
		divNode.style.display="none";
		}
	else
	{
		userNode.className = "error";
		divNode.style.display="block";
		}
	}
	
function check(inputNode,regex,divId){
	
	var flag = false;
	var divNode = document.getElementById(divId);
	
	if(regex.test(inputNode.value))
	{
		inputNode.className = "norm";
		divNode.style.display="none";
		flag = true;
		}
	else
	{
		inputNode.className ="error";
		divNode.style.display = "block";
		}
	return flag;
	}
//校验用户名
function checkUser(userNode)
{
	var regex = /^\w{6,12}$/	
	return check(userNode,regex,"userdiv");
	
	}
	
function checkPsw(pswNode){
	var flag =false;
	var regex = /^[a-z0-9]{6,12}$/i;
	return check(pswNode,regex,"pswdiv");
	}	
function checkRepsw(repswNode){ 
	 var value1 = repswNode.value;
	 var value2 = document.getElementsByName("psw")[0].value;
	 var divNode = document.getElementById("repswdiv");
	 
	 if(value1 == value2)
	 {
		 repswNode.className = "norm";
		divNode.style.display="none";
		flag = true
		 }
	 else
	{
		repswNode.className ="error";
		divNode.style.display = "block";
		}
		return flag;
}
function checkMail(mailNode)
{	
	var regex = /^\w+@\w+(\.\w+)+$/;
 	return	check(mailNode,regex,"maildiv");
	}

//校验表单	
/*function checkForm(formNode)
{
	//var form = document.forms[0];
	alert(".........");
	alert(form.user.value);
	
	with(formNode){
		if(checkUser(user) && checkPsw(psw) && checkRepsw(repsw) && checkMail(mail))
		event.returnValue = true;
		else
		event.returnValue = false;
		}
	}*/
	
function checkForm(){
	alert("....");
	/*var form = doc.forms[0];
	
	if(checkUser(from.user)&&checkPsw(form.psw) && checkMail(form.mail) && checkRepsw(form.repsw))
	event.returnValue =true;
	else 
	event.returnValue = false;*/
	
	//return false;
	}
</script>
</head>

<body>
<form  onsubmit="checkForm()">
	<table>
		<tr>
        	<th>用户注册</th>
		</tr>
        <tr>
        	<td>
                <div>用户名</div>
                <div><input type="text" name="user" onblur="checkUser(this)"/></div>
                <div class="errorinfo" id="userdiv">用户名错误,请按要求重写。</div>
                <div>用户名必须是6-12位,由字母(a-z),数字(0-9),下划线(-)组成</div>
       		</td>
        </tr>
        <tr>
        	<td>
                <div><span>密码</span><span id="repswspan"> 确认密码</span> </div>
                <div>
                	<input type="passwrod" name="psw"/ onblur="checkPsw(this)">
                	<input type="password" name="repsw"/ onblur="checkRepsw(this)">
                </div>              	
                <div class="errorinfo" id="pswdiv">密码格式错误,请按要求重新填写。</div>
                <div class="errorinfo" id="repswdiv">两次密码输入不一致</div>
                <div>密码必须是6-12位,由字母(a-z),数字(0-9)组成</div>
        	</td>
        </tr>
        <tr>
        	<td>
                <div>邮箱</div>
                <div><input type="text" name="mail" onblur="checkMail(this)"/></div>
                <div class="errorinfo" id="maildiv">邮箱错误,请按要求填写</div>
        	</td>
        </tr>
        
        <tr>
        	<th><input type="button" value="提交数据" /></th>
        </tr>    
    </table>
</form>
</body>
</html>




1.5 Tip:模拟收件箱表单

 

功能:全选,反选,删除,高亮显示


<title>收件箱</title>
<style type="text/css">
 table{
	 border:#3CC 3px solid ;
	 width:%50;
	 }
 table td,table th{
	 border:#39C 1px solid;
	 }
.one{
	background-color:#0FF
	}
.two{ background-color:#9F9
}
.over{ background-color:#FF0}
</style>
<script type="text/javascript">

//行颜色间隔显示并高亮
var name;
function trColor()
{
	var tabNode = document.getElementsByTagName("table")[0];
	
	var trs = tabNode.rows;
	
	for(var x=0; x<trs.length-1;x++){
		if(x%2==1)
		trs[x].className="ond";
		else
		 trs[x].className="two";
			
	trs[x].onmouseover = function(){
		name = this.className;
		this.className = "over";
		};
	
	trs[x].onmouseout = function(){
		this.className = name;
		}
	}
}
window.onload = function(){
	trColor();
	}	
//完成全选功能	
function checkAll(index){
	
	var allNode = document.getElementsByName("all")[index];
	
	var mails = document.getElementsByName("mail");
	
	for(var x=0; x<mails.length;x++){
		mails[x].checked = allNode.checked;
		}
}
	
function checkByBut(num){
	
	var mails = document.getElementsByName("mail");
	
	for(var x=0; x<mails.length;x++){
		if(num >1){
			mails[x].checked = !mails[x].checked;
			}
		else 
			mails[x].checked = num;
		}
}

//删除所选邮件,注意删除时长度在变化	
function deleteMail(){
	
	if(!window.confirm("是否要删除所选邮件?"))
	return;
	
	var mails = document.getElementsByName("mail");
	
	var arr = new Array();
	
	var pos =0;
	for(var x=0; x<mails.length;x++)
	{
		if(mails[x].checked)
		{
			//将所要删除的特定行的父节点的父节点封装成对象存入集合
			var trNode = mails[x].parentNode.parentNode;
			arr[pos++] = trNode;
			
			}
		}
	for(var x=0; x<=arr.length; x++)
	{
		var trNode = arr[x];
		trNode.parentNode.removeChild(trNode);
		}
	
	trColor();
}	
</script>

</head>
<body>
<table>
<tr >
	<th> <input type="checkbox" name="all" onclick="checkAll(0)"/>全选</th>
    <th>发件人</th>
    <th>邮件名称</th>
</tr>

<tr>
	<th> <input type="checkbox" name ="mail"  /></th>
    <th> 篮球1</th>
    <th> 新邮件</th>
</tr>

<tr>
	<th> <input type="checkbox" name ="mail"  /></th>
    <th> 篮球2</th>
    <th> 新的邮件</th>
</tr>

<tr>
	<th> <input type="checkbox" name ="mail"  /></th>
    <th> 篮球3</th>
    <th> 新的邮件</th>
</tr>
<tr>
	<th> <input type="checkbox" name ="mail"  /></th>
    <th> 篮球4</th>
    <th> 新的邮件</th>
</tr>
<tr>
	<th> <input type="checkbox" name ="mail"  /></th>
    <th> 篮球5</th>
    <th> 新的邮件</th>
</tr>
<tr>
	<th> <input type="checkbox" name ="mail"  /></th>
    <th> 篮球6</th>
    <th> 新的邮件</th>
</tr>
<tr>
	<th> <input type="checkbox" name ="all" onclick="checkAll(1)" />全选</th>
	<th colspan="2">
    <input type="button" value="全选" onclick="checkByBut(1)"/>
    <input type="button" value="取消全选" onclick="checkByBut(0)"/>
    <input type="button" value="反选" onclick="checkByBut(2)"/>
    <input type="button" value="删除所选邮件"  onclick="deleteMail()"/>
    
   </th>
</tr>
</table>
</body>
</html>



------- android培训java培训、期待与您交流! ----------

posted @ 2012-08-31 17:56  积小流,成江海  阅读(187)  评论(0编辑  收藏  举报