日期:2014-05-16  浏览次数:20465 次

js对表格数据的增删改
这是一个简单的数据修改 添加 删除
1.添加 修改 点击按钮会弹出模态窗口对数据进行编辑
2.做了一些简单的校验 用户名和密码不能为空 电话3~5-8 邮箱英文和数字组合+@英文+.com 验证  出生日期 加了一个时间控件 这个网上应该很多啦
3.页面在初始化的时候是从本地文件中读取json格式的文件 动态的加载到tr td中的
4.点中复选框 该行的文字会变成蓝色 取消后恢复最初颜色;
5.可以批量的删除,点击全选后 会删除所有的数据
这应该是个很简陋的作品啦 但是涉及到了很多 js的知识 可以简单的学习一下 没有介绍原理性的东西 主要还是实践
没有加入太多css的样式 无奈 本人缺少艺术细菌啊 太多的代码大家可能不太愿意看 那我说说实现的细节
下面看一下具体的实现过程
//主页面 index.html 初始化表格
<IE:Download ID="oDownload1" STYLE="behavior:url(#default#download)"/><!--加载本地文件 这个是ie自带的方法--> 

function onDownloadDone1(downData){
	readTxt1=eval('('+downData+')');//读取json格式数据用eval解析成json对象
	
}
oDownload1.startDownload('json.txt',onDownloadDone1);
//json的数据格式类似
{person:[{userId:"admin",name:"name",password:"123"},[{userId:"admin",name:"name",password:"123"},[{userId:"admin",name:"name",password:"123"}]}


读取 person内是一个数组 循环读出来就可以了比如readTxt1.person[i].userId;

//动态的生成表格 根据readTxt1.person.length 就可以判断生成多少行了

 var otr=getElelmentById('tableId').inserRow();
 var otd=otr.innsertCell();

//删除 单行删除
function deleteObj(obj){//obj是点击删除按钮的那个对象
	var otable1=document.getElementById('table1');
	//alert(otable1.outerHTML);
	//alert(obj.parentNode.parentNode.outerHTML);
	otable1.deleteRow(obj.parentElement.parentElement.rowIndex);
}
//删除 批量删除 需要判断选中的checkbox怎么判断呢  :D 其实很简单啦 只要获取checkbox的name属性值 循环遍历就可以了
function deleteSelectedAll(){
	var otable1=document.getElementById('table1');
	
	var checkboxSelectObj=document.getElementsByName('checkbox1');
	var len=checkboxSelectObj.length;
	for(var i=0;i<len;i++){
		//alert(checkboxSelectObj.length);
		var otbody=checkboxSelectObj[i].parentNode.parentNode.parentNode;
		var otr=checkboxSelectObj[i].parentNode.parentNode;
		if(checkboxSelectObj[i].checked==true){
				otbody.removeChild(otr);
				i--;//这个需要注意以下 每删除一行 获取checkbox的length就会减少一行
		}
	}
}

//好像改添加页面了 点击添加弹出模态窗口 进行添加信息
<input type="button" value="添加" onclick="addInfo()">
function addInfo()
{
	var obj={win:window}<!--传递当前窗口的对象-->
   var result = window.showModalDialog("add.html",obj,"dialogWidth:400px;dialogHeight:300px;");<!--弹出模态窗口 有三个参数 1.需要弹出窗口的url路径 可以使当前的相对路径,2.传递参数 3.模态窗口的一些属性值的设置-->
   
}

在添加页面add.html获取参数
var obj = window.dialogArguments;
var otable=obj.win.document.getElementById("table1");//这样就获取到了父窗口的table的id了 可以动态添加数据咯
//修改的页面和添加的差不多 需要将选中的数据传递到模态窗口 只要传递tr对象 然后将修改后的数据 传递个tr这个对象就好了 很简单的

关于正则 简单的校验的校验还可以 复杂的 我是感觉相当的晕了
//电话号码 3~5-8位  
var reg=/^[0-9]{3,5}-[0-9]{8}$/;
//邮箱 
var reg2=/^(([0-9]+[a-zA-Z]+)|([a-zA-Z]+[0-9]+))@[a-zA-Z]+(\.com)$/;
var telObj=document.getElementById('telephoneId');
reg.test(telObj.value);//对电话号码进行校验  邮箱的也一样

我没有上传源码 主要还是思路 还有方法 还是要自己去事实现的哦 上传一个时间控件