DHTML-----表格的创建和样式

一、表格的创建、删除

给定表格的行列,实现创建,修改和,删除功能

<!DOCTYPE html>
<html>
  <head>
    <title>DHTML技术演示</title>
		<style type="text/css">
			table{
				border-collapse:collapse;
				color#ff0080;
				width:800px;
			}
			table td{
				border:#0000ff 1px solid;
				text-align:center;
			}
		</style>
    
      <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

  </head>
  
  <body>
	<!--添加-->
    <input type="button" value="创建一行" οnclick="creatTable()">
    <input type="button" value="创建多行表格" οnclick="creatTable2()">
	<hr/>
	行数<input type="text" name="rowNum"  >  
	列数<input type="text" name="colNum"  >
	<input type="button" value="创建" οnclick="creatTable3()">
	<h3>删除前面由用户指定行列号方式创建的表格</h3> <br/>
	行号<input type="text" name="delRowNum"  >  
	<input type="button" value="删除行" οnclick="delRow()">
	列号<input type="text" name="delColNum" >
	<input type="button" value="删除行" οnclick="delCol()">
	<div>
	</div>
  </body>
  	<script type="text/javascript">
  		function creatTable(){
			var oTableNode=document.createElement("table");//创建表格对象
			var oTrNode=oTableNode.insertRow();//创建行对象
			var oTdNode=oTrNode.insertCell();//创建单元格
			oTdNode.innerHTML="内容";
			document.getElementsByTagName("div")[0].appendChild(oTableNode);
		}
		function creatTable2(){
			var oTableNode=document.createElement("table");//创建表格对象
			for(var i=0;i<8;i++){
				var oTrNode=oTableNode.insertRow();//创建行对象
					for(var j=0;j<5;j++){
					var oTdNode=oTrNode.insertCell();//创建单元格
					oTdNode.innerHTML=(i+1)+"行"+(j+1)+"列";
				}
			}
			document.getElementsByTagName("div")[0].appendChild(oTableNode);
		}
		//用户自定义行号与列号的方式创建表格
		function creatTable3(){
			var oTableNode=document.createElement("table");//创建表格对象
			//添加属性
			oTableNode.setAttribute("id","tableId");//这种利用方法更好
			//由用户指定行数与列数的表格
			//获取用户输入的行数与列数
			var rowNum=parseInt(document.getElementsByName("rowNum")[0].value);
			var colNum=parseInt(document.getElementsByName("colNum")[0].value);
			//防护
			if(isNaN(rowNum)||rowNum<=0||isNaN(colNum)||colNum<=0){
				alert("请输入大于0的整数");
				return;
			}
			for(var i=0;i<rowNum;i++){
				var oTrNode=oTableNode.insertRow();//创建行对象
					for(var j=0;j<colNum;j++){
					var oTdNode=oTrNode.insertCell();//创建单元格
					oTdNode.innerHTML="第"+(i+1)+"行"+"第"+(j+1)+"列";
				}
			}
			document.getElementsByTagName("div")[0].appendChild(oTableNode);
			document.getElementsByTagName("div")[0].innerHTML+="<hr/>";
		}
		//删除指定的行,列
		function delRow(){
			var oTableNode=document.getElementById("tableId");
			//防护
			if(oTableNode==null){
				alert("表格不存在");
				return;
			}
			//删除行的处理代码
			//获取用户输入的行号
			var delRowNum=parseInt(document.getElementsByName("delRowNum")[0].value);
			//行防护
			if(isNaN(delRowNum)){
				alert("行号必须是数字");
				return;
			}
			if(!(delRowNum>0&&delRowNum<=oTableNode.getElementsByTagName("tbody")[0].getElementsByTagName("tr").length)){
				alert("改行不存在");
				return;
			}
			//删除行
			oTableNode.deleteRow(delRowNum-1);
		}
		//删除指定的列
		function delCol(){
			var oTableNode=document.getElementById("tableId");
			//防护
			if(oTableNode==null){
				alert("表格不存在");
				return;
			}
			//删除列的处理代码
			//获取用户输入的列号
			var delColNum=parseInt(document.getElementsByName("delColNum")[0].value);
			//列防护
			if(isNaN(delColNum)){
				alert("列号必须是数字");
				return;
			}
			
			if(!(delColNum>0&&delColNum<=oTableNode.rows[0].cells.length)){
				alert("改列不存在");
				return;
			}
			//删除列:※※表格中没有现成的删除列的函数,因此只能自己遍历行,然后通过tr对象中的deleteCell来实现
			for(var x=0;x<oTableNode.rows.length;x++){
				oTableNode.rows[x].deleteCell(delColNum-1);
			}
		}
  	</script>
</html>

二、表格的DIV样式(间隔显示,高亮、排序)

<!DOCTYPE html>
<html>
  <head>
    <title>tableSytle.html</title>
    <style type="text/css">
    	@import url(1.css);
		.one{
			background-color:#ff8040;
		}
		.two{
			color:#8000ff;
		}
		.over{
			background-color:#ffff00;
		}
    </style>
    

  </head>
  
  <body>
    	<table id="table">
    		<caption>湖南城市学院</caption>
		<tr><th> 姓名</th> <th> <a href="javascript:void(0);" οnclick="sortMethod(this);">年龄</a></th> <th> 地址</th> </tr>
		<tr><td> 张三</td> <td> 30</td> <td> 湖南长沙</td> </tr>
		<tr><td> Tom</td> <td> 10</td> <td> 湖南长沙</td> </tr>
		<tr><td> 李四</td> <td> 2</td> <td> 湖南长沙</td> </tr>
		<tr><td> 杰克</td> <td> 23</td> <td> 湖南长沙</td> </tr>
		<tr><td> Jack</td> <td> 26</td> <td> 湖南长沙</td> </tr>
		<tr><td> wang</td> <td> 21</td> <td> 湖南长沙</td> </tr>
		<tr><td> 王建安</td> <td> 26</td> <td> 湖南长沙</td> </tr>
    	</table>
  </body>
  <script type="text/javascript">
  	var i;
  		function trColor(){
			var oTableNode=document.getElementById("table");
			var cells=parseInt(oTableNode.rows[0].cells.length)*parseInt(oTableNode.rows.length);
			var count=0;
			
			while(count<cells){
				for(i=0;i<oTableNode.rows.length;i++){
					for(var j=0;j<oTableNode.rows[0].cells.length;j++){
						if(((count++)%4)==0){
							oTableNode.rows[i].cells[j].style.fontSize="23px";
						}else{
							oTableNode.rows[i].cells[j].style.fontStyle="italic";
						}
					}
				}
			}
			for(i=0;i<oTableNode.rows.length;i++){
				if((i&1)==0){//相同为1不同为0
					oTableNode.rows[i].className="one";
				}else{
					oTableNode.rows[i].className="two";
				}
				var oldClassName;
				oTableNode.rows[i].οnmοuseοver=function(){
					oldClassName=this.className;
					//oTableNode.rows[i].className="over";
					//alert( i+" "+oTableNode.rows[i-1].className);//i=oTableNode.rows.length进不去
					this.className="over";
				}
				oTableNode.rows[i].οnmοuseοut=function(){
					this.className=	oldClassName;
				}
			}
		}
		 
		//onload = trColor();//这种方式赋值就是执行(本例中,这一句没有效果,因为table对象还没出来。但如果把该段代码放在<table>之后则有效果),而且只能执行这一个方法
	    onload = function(){
			trColor();
			//还可以在这里写其它代码,甚至调用其它函数
		};//这种方式只是给onload事件注册响应函数,解析该句代码时函数并没有执行,而是在该事件发生时才会调用。并且可以在function()中调用多个函数.
 		var flag=true;
		function sortMethod(aNode){
		//	alert(this);//windows
			var oTableNode=document.getElementById("table");
			var oTrNodes=[];
			for(var i=1;i<oTableNode.rows.length;i++){
				oTrNodes[i-1]=oTableNode.rows[i];
			}
			mySortMinTOMax(oTrNodes);
			if(flag){
				for(var x=0;x<oTrNodes.length;x++){
					oTrNodes[x].parentNode.appendChild(oTrNodes[x]);
				}
				aNode.innerText="年龄↑";
			}else{
				for(var x=oTrNodes.length-1;x>=0;x--){
					oTrNodes[x].parentNode.appendChild(oTrNodes[x]);
				}
				aNode.innerText="年龄↓";
			}
			flag=!flag;
			//下面这张可以,但不简便
			/*if((oTableNode.rows[0].cells[1].innerText=="年龄")||(oTableNode.rows[0].cells[1].innerText=="年龄↓")){
				mySortMinTOMax(oTrNodes);
				oTableNode.rows[0].cells[1].innerHTML="<td><a href='javascript:void(0);' οnclick='sortMethod();'>年龄↑</a></td>";

			}else{
				mySortMaxTOMin(oTrNodes);
				oTableNode.rows[0].cells[1].innerHTML ="<td><a href='javascript:void(0);' οnclick='sortMethod();'>年龄↓</a></td>";
			}
			for(var i=0;i<oTrNodes.length;i++){
				oTrNodes[i].parentNode.appendChild(oTrNodes[i]);//覆盖方法
			}*/
			trColor();
		}
		function mySortMinTOMax(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].innerText) > parseInt(arr[y].cells[1].innerText)){
						var temp = arr[x];
						arr[x] = arr[y];
						arr[y] = temp;
					}
				}
			}
		}
		function mySortMaxTOMin(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].innerText) < parseInt(arr[y].cells[1].innerText)){
						var temp = arr[x];
						arr[x] = arr[y];
						arr[y] = temp;
					}
				}
			}
		}
  </script>
</html>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值