zoukankan      html  css  js  c++  java
  • JavaScript动态增删改表格数据

      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 
      9         #divNumEdit { float: right; width: 90px; border: 0px; margin: 0; }
     10 
     11         table { border-collapse: collapse; border: 1px solid #0094ff; width: 400px; margin: 5px auto; text-align: center; }
     12 
     13         td { border: 1px solid #0094ff; }
     14         input.count {width:32px; text-align:center;}
     15         #trTitle { font-weight: bolder; background-color: #4cff00; }
     16     </style>   
     17 </head>
     18 <body>
     19     <div>        
     20         <input type="button" value="新增菜单" id="btnAddOption" onclick="addMenuOption()" />
     21         <label>菜单:</label>
     22         <select id="selList">
     23             <option>兰州拉面</option>
     24             <option>肉夹馍</option>
     25             <option>手撕包菜</option>
     26             <option>西兰花炒蛋</option>
     27         </select>
     28         <label>数量</label>
     29         <div id="divNumEdit">
     30             <input type="button" value="+" onclick="EditNum(this);" />
     31             <label id="labelNum">0</label>
     32             <input type="button" value="-" onclick="EditNum(this)" />
     33         </div>
     34     </div>
     35     <div>
     36         <input type="button" value="新增订单" id="btnAddTr" onclick="addRowData()" />
     37     </div>
     38     <table id="tbList">
     39         <tr id="trTitle">
     40             <td>序号</td>
     41             <td>菜名</td>
     42             <td>数量</td>
     43             <td>编辑</td>
     44         </tr>
     45     </table>
     46     <div>
     47         <input type="checkbox" id="chkAll" onclick="checkAll()" /><label for="chkAll">全选</label>
     48         <a href="javascript:void(0)" onclick="delCheckedRow()">删除选中</a>
     49     </div>
     50     <script>
     51         var index = 1;
     52         var table = document.getElementById("tbList");
     53         var Name;
     54         var Count;
     55         var IsEditable = true;// 标示编辑操作是否可用.
     56         function addMenuOption() {
     57             var name = prompt("请输入菜单名...");
     58             if (name == null || name == "") return;//验证输入是否为空.
     59             var op = document.createElement("option");
     60             op.innerHTML = name;
     61             document.getElementById("selList").appendChild(op);
     62         }//增加菜单
     63         function EditNum(obj) {
     64             if (obj.value == "+") {
     65                 obj.nextElementSibling.innerHTML++;
     66             } else {
     67                 if (obj.previousElementSibling.innerHTML > 0)
     68                     obj.previousElementSibling.innerHTML--;
     69             }
     70         }//编辑数量
     71         function addRowData() {
     72             if (!IsEditable) return;
     73             if (document.getElementById("labelNum").innerHTML == 0) { return; }//如果数量为0,不增加行数据.
     74             var tr = document.createElement("tr");
     75             var tdId = document.createElement("td");
     76             var tdName = document.createElement("td");
     77             var tdCount = document.createElement("td");
     78             var tdAction = document.createElement("td");
     79             tdId.innerHTML = "<input type='checkbox' />" + index;
     80             tdName.innerHTML = document.getElementById("selList").value;
     81             tdCount.innerHTML = document.getElementById("labelNum").innerHTML;
     82             tdAction.innerHTML = '<a href="javascript:;" onclick="editRowData(this)">编辑</a>&nbsp<a href="javascript:;" onclick="delRowData(this)">删除</a>';
     83             tr.appendChild(tdId);
     84             tr.appendChild(tdName);
     85             tr.appendChild(tdCount);
     86             tr.appendChild(tdAction);
     87             table.appendChild(tr);
     88             index++;//增加序号.
     89         }//添加行数据.
     90         function delRowData(obj) {
     91             table.removeChild(obj.parentNode.parentNode);
     92         }//删除行数据.
     93         function editRowData(obj) {
     94             if (!IsEditable) return;
     95             var tr = obj.parentNode.parentNode;
     96             Name = tr.children[1].innerHTML;
     97             Count = tr.children[2].innerHTML;
     98             tr.children[1].innerHTML = "<select>" + document.getElementById("selList").innerHTML + "</select>";
     99             tr.children[1].children[0].value = Name;
    100             tr.children[2].innerHTML = '<input type="text" class="count" value="' + Count + '"/>';
    101             tr.children[3].innerHTML = '<a href="javascript:;" onclick="saveEdit(this)">保存</a>&nbsp<a href="javascript:;" onclick="cancelEdit(this)">取消</a>';
    102             IsEditable = false;
    103         }//编辑行数据
    104         function cancelEdit(obj) {
    105             var tr = obj.parentNode.parentNode;            
    106             tr.children[1].innerHTML = Name;
    107             tr.children[2].innerHTML = Count;
    108             tr.children[3].innerHTML = '<a href="javascript:;" onclick="editRowData(this)">编辑</a>&nbsp<a href="javascript:;" onclick="delRowData(this)">删除</a>';
    109             IsEditable = true;
    110         }//取消编辑
    111         function saveEdit(obj) {
    112             var tr = obj.parentNode.parentNode;
    113             tr.children[1].innerHTML = tr.children[1].children[0].value;
    114             tr.children[2].innerHTML = tr.children[2].children[0].value;
    115             tr.children[3].innerHTML = '<a href="javascript:;" onclick="editRowData(this)">编辑</a>&nbsp<a href="javascript:;" onclick="delRowData(this)">删除</a>';
    116             IsEditable = true;
    117         }//保存编辑后的结果
    118         function checkAll() {
    119             var ck = document.getElementById("chkAll").checked;           
    120             var tr;
    121             for (var i = 1; i < table.children.length; i++) {
    122                 tr = table.children[i];
    123                 tr.children[0].children[0].checked = ck;
    124             }
    125         }//全选
    126         function delCheckedRow() {
    127             var tr;
    128             var ck;
    129             for (var i = table.children.length-1; i >=1; i--) {
    130                 tr = table.children[i];
    131                 ck = tr.children[0].children[0].checked;
    132                 if (ck) table.removeChild(tr);
    133             }
    134         }//删除选中行
    135     </script>
    136 </body>
    137 </html>
    欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果感觉对您有用,请点击推荐。您的支持,是我的动力!
  • 相关阅读:
    让你的qstardict读单词
    IOS6 新特性之UIActivityViewController详解
    NSLayoutConstraint-代码实现自动布局的函数用法说明
    NSLayoutConstraint-代码实现自动布局的函数用法说明
    常见音频格式比较
    常见音频格式比较
    Android || IOS录制mp3语音文件方法
    Android || IOS录制mp3语音文件方法
    ios与android设备即时语音互通的录音格式预研说明
    ios与android设备即时语音互通的录音格式预研说明
  • 原文地址:https://www.cnblogs.com/ICE_Inspire/p/4537355.html
Copyright © 2011-2022 走看看