原生JS和JQuery动态添加、删除表格行的方法_javascript技巧

本文实例讲述了原生JS和JQuery动态添加、删除表格行的方法。分享给大家供大家参考。具体分析如下:

下面HTML代码作用:提交一个表单,将复选框的值提交(复选框的值等于后面的文本框,复选框和文本框处在同一行,可以动态添加和删除)。

原生态JS版:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>javascript添加行demo</title>
 <script type="text/javascript">
 /**验证表单复选框是否有选择*/
 function isValidChkSelect(frm){
  var chk = frm.chked;
  if(chk == undefined){
  return;
  }
  var len = frm.chked.length;
  if(chk.length == undefined){
  // 只有一个checkbox
  if (chk.checked == true) {
   return true;
  }
  } else {
  for(var i = 0; i < chk.length; i++) {
   if (chk[i].checked == true) {
   return true;
   }
  }
  }
  return false;
 }
 /**选择所有文本框*/
 function selectAll(frm){
  for (var i = 0; i < frm.elements.length; i++){
  var e = frm.elements[i];
  if (e.name != 'chkall' && e.type == 'checkbox')
   e.checked = frm.chkall.checked;
  }
 }
 /**添加新行*/
 function addNew(){
  var objMyTable = document.getElementById("tbl");
  var index = objMyTable.rows.length - 1;
  var nextRow = objMyTable.insertRow(index);// 插入新行
  var objCel_0 = nextRow.insertCell(0);// 添加单元格
  objCel_0.innerHTML = "<input type='checkbox' name='chked' value='' />";
  var objCel_1 = nextRow.insertCell(1);
  // nextRow.rowIndex -- 行索引
  objCel_1.innerHTML = "<input type='text' name='newRow"+nextRow.rowIndex+"' /> <a href='#' onclick='delRow(this)'>删除</a>";
 }
 /**删除行对象*/
 function delRow(obj){
  //obj.parentNode.parentNode.removeNode(true); // Firefox不兼容
  var new_tr = obj.parentNode.parentNode;
  var tmp = new_tr.parentNode;
  tmp.removeChild(new_tr); // 删除子节点
 }
 /**将文本框值赋给同一行对应的复选框*/
 function setValue(obj, obj_chk){
  obj_chk.value = obj.value;
 }
 function doSubmit(frm){
  if(isValidChkSelect(frm) == false){
  alert("选择不能少于一项");
  return false;
  }
  for(var i = 0; i < document.getElementsByTagName("input").length; i++) {
  var obj = document.getElementsByTagName("input")[i];
  if(obj.type == "text" && obj.name.substring(0, 6) == "newRow"){
   var obj_chk = obj.parentNode.parentNode.childNodes[0].childNodes[0];// 复选框对象
   if(valid(obj, obj_chk)){
   setValue(obj, obj_chk);// 同一行的文本框值 赋值给 复选框
   continue;
   } else {
   return false;
   }
  }
  }
  return true;
 }
 function valid(obj, obj_chk){
  if(obj_chk.checked){
  var patrn = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
  if(obj.value == ""){
   alert("添加的地址不能为空!");
   return false;
  }
  if(!patrn.test(obj.value)){
   alert("请输入正确的邮件地址!");
   return false;
  }
  }
  return true;
 }
 </script>
</head>
<body>
 <form method="post" action="" onsubmit="return doSubmit(this)">
 <table id="tbl" border="1" cellpadding="4" style="border-collapse: collapse" width="100%">
  <tr>
  <td><input type="checkbox" name='chkall' onclick="selectAll(this.form)"/>全部选择</td>
  <td>
   允许发送地址
   <a href="#" onclick="addNew()">添加新地址</a>
  </td>
  </tr>
  <tr>
  <td>
   <input type="checkbox" name="chked" value="mailfrom@gmail.com">
  </td>
  <td>mailfrom@gmail.com</td>
  </tr>
  <tr>
  <td colspan="2">
   <input type="submit" value="提交" name="B1">
  </td>
  </tr>
 </table>
 </form>
</body>
</html>

JQuery版:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery添加行demo</title>
<script type="text/javascript" src="jquery-1.6.4.min.js"></script>
<script type="text/javascript">
 $("document").ready(function(){
  // 全部选择的点击事件
  $("input[name='chkall']").click(function(){
  $("input[name='chked']").attr("checked", this.checked);
  });
 });
 var row_cur_index = 0;// 插入行的当前索引
 /**添加新行*/
 function addNew(){
  var row_id = "tr" + row_cur_index;// 所插入行的id
  var row_obj = "<tr id='"+row_id+"'><td><input type='checkbox' class='ck_class' name='chked' value='' /></td><td><input type='text' name='newRow"+row_cur_index+"' /> <a href='#' onclick='delRow("+row_id+")'>删除</a></td></tr>";
  $("#topRow").before(row_obj); // 插入行
  row_cur_index = row_cur_index + 1;
 }
 /**将文本框值赋给同一行对应的复选框*/
 function setValue(row_index, value){
  var row_id = "#tr" + row_index;
  $(row_id).find(":checked").val(value);
 }
 /**删除行对象*/
 function delRow(row_id){
  $(row_id).remove(); // 删除匹配row_id的元素
 }
 function doSubmit(frm){
  /**判断复选框是否有选*/
  if($("input[name='chked']:checked").size() == 0){
  alert("选择不能少于一项");
  return false;
  }
  try {
  $("tr[id^='tr']").each(function(){
   var tmp_row_index = this.id.substring(2); // 当前行索引
   if($("#tr"+tmp_row_index).find(":checkbox").attr("checked")){
   var patrn = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
   var input_value = $("input[name='newRow"+tmp_row_index+"']").val(); // 文本框值
   setValue(tmp_row_index, this.value);
   if(input_value == "") throw "Err1";
   if (!patrn.test(input_value)) throw "Err2";
   }
  });
  } catch (e) {
   if(e == "Err1")
   alert("添加的地址不能为空!");
  if(e == "Err2")
   alert("请输入正确的邮件地址!");
   return false;
  }
  return true;
 }
 </script>
</head>
<body>
 <form method="post" action="" onsubmit="return doSubmit(this)">
 <table id="tbl" border="1" cellpadding="4" style="border-collapse: collapse" width="100%">
  <tr>
  <td><input type="checkbox" name='chkall' />全部选择</td>
  <td>
   允许发送地址
   <a href="#" onclick="addNew()">添加新地址</a>
  </td>
  </tr>
  <tr>
  <td>
   <input type="checkbox" name="chked" value="mailfrom@gmail.com">
  </td>
  <td>mailfrom@gmail.com</td>
  </tr>
  <tr id="topRow">
  <td colspan="2">
   <input type="submit" value="提交" name="B1">
  </td>
  </tr>
 </table>
 </form>
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索jquery
, js
, 删除
, 动态添加
表格行
原生javascript、javascript 原生ajax、javascript原生代码、原生javascript插件、原生javascript做动画,以便于您获取更多的相关知识。

时间: 2024-11-03 14:34:59

原生JS和JQuery动态添加、删除表格行的方法_javascript技巧的相关文章

javascript动态添加删除tabs标签的方法_javascript技巧

本文实例讲述了javascript动态添加删除tabs标签的方法.分享给大家供大家参考.具体实现方法如下: <html> <HEAD> <TITLE>网页对话</TITLE> <LINK href="style.css" type=text/css rel=stylesheet> <script> function $(obj) { var o = typeof(obj)=="object" ?

原生JS和JQuery动态添加、删除表格行的方法

  本文实例讲述了原生JS和JQuery动态添加.删除表格行的方法.分享给大家供大家参考.具体分析如下: 下面HTML代码作用:提交一个表单,将复选框的值提交(复选框的值等于后面的文本框,复选框和文本框处在同一行,可以动态添加和删除). 原生态JS版: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 4

动态添加删除表格行的js实现代码

 本篇文章主要是对动态添加删除表格行的js实现代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助  代码如下: <html> <head> <script language="javascript">   //窗口表格增加一行   function addNewRow(){    var tabObj=document.getElementById("myTab");//获取添加数据的表格    var rowsNum

原生js实现jquery函数animate()动画效果的简单实例_javascript技巧

通过在公司一个月的实习,慢慢的对css跟html算是比较熟悉了,这几天开始研究js,今天用js写了一个jquery的animate函数,测试了下,性能还可以.个人觉得jquery并不是万能的,因为是个框架,所以有些东西写的比较死,就像animate函数一样,可选的参数不多有时候可能并不能实现我们想要的效果. 注释的部分是用来测试用的,写代码的过程并不是十分顺利,因为用js平时用的不是很细,都是大体知道方法,也用过,但等到真正要实现动画函数的时候,细枝末节写错了就可能把人难住了. 函数里面有几个参

JS动态增删表格行的方法_javascript技巧

本文实例讲述了JS动态增删表格行的方法.分享给大家供大家参考,具体如下: function insertRow(tableName,className,bgcolor, cellContentArray){ var t = document.getElementByIdx(tableName); //取得table表 var tr = t.insertRow(); //插入一行 tr.className=className; //设置行的css tr.bgcolor=bgcolor; //设置行

原生js和jquery中有关透明度设置的相关问题_javascript技巧

在日常开发的网站中,常常会用到设置透明度问题,最简单的就是图片的淡入淡出效果.下面我介绍一下在原生js和jQuery中设置透明度的相关问题和注意点: 1 透明度样式设置 透明度在IE浏览器和其他相关浏览器中的设置方法不太相同,IE使用filter:alpha属性,firefox使用opactiy属性,下面示例设置透明度为30%: IE:filter: alpha(opacity:30): firefox:opacity(0.3): 2 原生js设置透明度 为了兼容IE与其他浏览器对透明度的设置,

JS通过ajax动态读取xml文件内容的方法_javascript技巧

本文实例讲述了JS通过ajax动态读取xml文件内容的方法.分享给大家供大家参考.具体分析如下: 下面的JS代码读取note.xml文件,并填充显示相关字段 HTML文件代码如下 <!DOCTYPE html> <html> <head> <script> function loadXMLDoc(url) { var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome,

JS把内容动态插入到DIV的实现方法_javascript技巧

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="content-

JS实现鼠标点击展开或隐藏表格行的方法_javascript技巧

本文实例讲述了JS实现鼠标点击展开或隐藏表格行的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtm