JavaScript动态增删改表格数据

来源:互联网 发布:软件学报 ei 编辑:程序博客网 时间:2024/05/05 19:17
  1. <!DOCTYPE html>
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5.     <title></title>
  6.     <style type="text/css">
  7.         div { border: 1px solid #0094ff; text-align: center; width: 420px; margin: 5px auto; }

  8.         #divNumEdit { float: right; width: 90px; border: 0px; margin: 0; }

  9.         table { border-collapse: collapse; border: 1px solid #0094ff; width: 400px; margin: 5px auto; text-align: center; }

  10.         td { border: 1px solid #0094ff; }
  11.         input.count {width:32px; text-align:center;}
  12.         #trTitle { font-weight: bolder; background-color: #4cff00; }
  13.     </style>   
  14. </head>
  15. <body>
  16.     <div>        
  17.         <input type="button" value="新增菜单" id="btnAddOption" onclick="addMenuOption()" />
  18.         <label>菜单:</label>
  19.         <select id="selList">
  20.             <option>兰州拉面</option>
  21.             <option>肉夹馍</option>
  22.             <option>手撕包菜</option>
  23.             <option>西兰花炒蛋</option>
  24.         </select>
  25.         <label>数量</label>
  26.         <div id="divNumEdit">
  27.             <input type="button" value="+" onclick="EditNum(this);" />
  28.             <label id="labelNum">0</label>
  29.             <input type="button" value="-" onclick="EditNum(this)" />
  30.         </div>
  31.     </div>
  32.     <div>
  33.         <input type="button" value="新增订单" id="btnAddTr" onclick="addRowData()" />
  34.     </div>
  35.     <table id="tbList">
  36.         <tr id="trTitle">
  37.             <td>序号</td>
  38.             <td>菜名</td>
  39.             <td>数量</td>
  40.             <td>编辑</td>
  41.         </tr>
  42.     </table>
  43.     <div>
  44.         <input type="checkbox" id="chkAll" onclick="checkAll()" /><label for="chkAll">全选</label>
  45.         <a href="javascript:void(0)" onclick="delCheckedRow()">删除选中</a>
  46.     </div>
  47.     <script>
  48.         var index = 1;
  49.         var table = document.getElementById("tbList");
  50.         var Name;
  51.         var Count;
  52.         var IsEditable = true;// 标示编辑操作是否可用.
  53.         function addMenuOption() {
  54.             var name = prompt("请输入菜单名...");
  55.             if (name == null || name == "") return;//验证输入是否为空.
  56.             var op = document.createElement("option");
  57.             op.innerHTML = name;
  58.             document.getElementById("selList").appendChild(op);
  59.         }//增加菜单
  60.         function EditNum(obj) {
  61.             if (obj.value == "+") {
  62.                 obj.nextElementSibling.innerHTML++;
  63.             } else {
  64.                 if (obj.previousElementSibling.innerHTML > 0)
  65.                     obj.previousElementSibling.innerHTML--;
  66.             }
  67.         }//编辑数量
  68.         function addRowData() {
  69.             if (!IsEditable) return;
  70.             if (document.getElementById("labelNum").innerHTML == 0) { return; }//如果数量为0,不增加行数据.
  71.             var tr = document.createElement("tr");
  72.             var tdId = document.createElement("td");
  73.             var tdName = document.createElement("td");
  74.             var tdCount = document.createElement("td");
  75.             var tdAction = document.createElement("td");
  76.             tdId.innerHTML = "<input type='checkbox' />" + index;
  77.             tdName.innerHTML = document.getElementById("selList").value;
  78.             tdCount.innerHTML = document.getElementById("labelNum").innerHTML;
  79.             tdAction.innerHTML = '<a href="javascript:;" onclick="editRowData(this)">编辑</a> <a href="javascript:;" onclick="delRowData(this)">删除</a>';
  80.             tr.appendChild(tdId);
  81.             tr.appendChild(tdName);
  82.             tr.appendChild(tdCount);
  83.             tr.appendChild(tdAction);
  84.             table.appendChild(tr);
  85.             index++;//增加序号.
  86.         }//添加行数据.
  87.         function delRowData(obj) {
  88.             table.removeChild(obj.parentNode.parentNode);
  89.         }//删除行数据.
  90.         function editRowData(obj) {
  91.             if (!IsEditable) return;
  92.             var tr = obj.parentNode.parentNode;
  93.             Name = tr.children[1].innerHTML;
  94.             Count = tr.children[2].innerHTML;
  95.             tr.children[1].innerHTML = "<select>" + document.getElementById("selList").innerHTML + "</select>";
  96.             tr.children[1].children[0].value = Name;
  97.             tr.children[2].innerHTML = '<input type="text" class="count" value="' + Count + '"/>';
  98.             tr.children[3].innerHTML = '<a href="javascript:;" onclick="saveEdit(this)">保存</a> <a href="javascript:;" onclick="cancelEdit(this)">取消</a>';
  99.             IsEditable = false;
  100.         }//编辑行数据
  101.         function cancelEdit(obj) {
  102.             var tr = obj.parentNode.parentNode;            
  103.             tr.children[1].innerHTML = Name;
  104.             tr.children[2].innerHTML = Count;
  105.             tr.children[3].innerHTML = '<a href="javascript:;" onclick="editRowData(this)">编辑</a> <a href="javascript:;" onclick="delRowData(this)">删除</a>';
  106.             IsEditable = true;
  107.         }//取消编辑
  108.         function saveEdit(obj) {
  109.             var tr = obj.parentNode.parentNode;
  110.             tr.children[1].innerHTML = tr.children[1].children[0].value;
  111.             tr.children[2].innerHTML = tr.children[2].children[0].value;
  112.             tr.children[3].innerHTML = '<a href="javascript:;" onclick="editRowData(this)">编辑</a> <a href="javascript:;" onclick="delRowData(this)">删除</a>';
  113.             IsEditable = true;
  114.         }//保存编辑后的结果
  115.         function checkAll() {
  116.             var ck = document.getElementById("chkAll").checked;           
  117.             var tr;
  118.             for (var i = 1; i < table.children.length; i++) {
  119.                 tr = table.children[i];
  120.                 tr.children[0].children[0].checked = ck;
  121.             }
  122.         }//全选
  123.         function delCheckedRow() {
  124.             var tr;
  125.             var ck;
  126.             for (var i = table.children.length-1; i >=1; i--) {
  127.                 tr = table.children[i];
  128.                 ck = tr.children[0].children[0].checked;
  129.                 if (ck) table.removeChild(tr);
  130.             }
  131.         }//删除选中行
  132.     </script>
  133. </body>
  134. </html>
0 0
原创粉丝点击