js初级练习2(增删改)

  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
  8         {
  9             border:1px solid red;
 10             height:20px;
 11             width:300px;
 12             margin:10px auto;
 13             text-align:center;
 14         }
 15         table
 16         {
 17
 18             width:300px;
 19             margin:0 auto;
 20             border:1px solid #0094ff;
 21             border-collapse:collapse;
 22         }
 23         td
 24         {
 25             border:1px solid #0094ff;
 26             text-align:center;
 27
 28         }
 29     </style>
 30     <script type="text/javascript">
 31
 32         window.onload = function () {
 33             /////////////
 34             //添加菜单按钮
 35             document.getElementById("btnAddmenu").onclick = function () {
 36                 //取到用户输入
 37                 var inputtxt = prompt("请输入", "西瓜");
 38                 if (inputtxt.trim() == "")
 39                     return alert("输入合适菜单");
 40                 var optionobjects = document.getElementById("foodList").children;
 41                 for (var i = 0; i < optionobjects.length; i++) {
 42                     if (optionobjects[i].innerHTML.trim() == inputtxt.trim())
 43                         return alert("重复菜单");
 44                 }
 45                 //create一个option
 46                 var optioncreate = document.createElement("option");
 47                 optioncreate.innerHTML = inputtxt;
 48                 //将该option添加给select
 49                 document.getElementById("foodList").appendChild(optioncreate);
 50             }
 51             //////////////
 52             //新增订单
 53             var indexcount = 0;
 54             //对象存储td
 55             var tdobject = new Object();
 56
 57
 58             document.getElementById("btnAddTr").onclick = function () {
 59                 //给对象添加属性
 60                 indexcount++;
 61                 tdobject.td1 =indexcount+ "<input type=‘checkbox‘ class=‘ck01‘/>";
 62                 tdobject.menu = document.getElementById("foodList").value;
 63                 tdobject.state = "<a href=‘#‘ onclick=‘Deltr(this);‘>删除</a>  <a href=‘#‘ class=‘edit‘>编辑</a>";
 64                 var trcreate = document.createElement("tr");
 65                 //创建tr元素,遍历对象,每个属性给到新创建的td,并将td加给tr
 66                 for (var i in tdobject) {
 67                     var tdcreate = document.createElement("td");
 68                     tdcreate.innerHTML = tdobject[i];
 69                     trcreate.appendChild(tdcreate);
 70                 }
 71                 document.getElementById("tbid01").appendChild(trcreate);
 72                 //添加新元素,要将这些元素中的onclick事件一起注册
 73                 //这里注册编辑a标签 事件
 74                 var editobjets = document.getElementsByClassName("edit");
 75                 for (var j = 0; j < editobjets.length; j++) {
 76                     editobjets[j].onclick = function () {
 77                         //得到行
 78                      var  trobject= this.parentNode.parentNode;
 79                         //替换行第二列为txt
 80                      var td02= trobject.children[1];
 81                       oldinnerhtml= td02.innerHTML;
 82                      td02.innerHTML = "<input type=‘Text‘ value=‘" + oldinnerhtml + "‘/>";
 83                      td02.children[0].focus();
 84                      td02.children[0].select();
 85                         //替换第三列a标签为保全,取消
 86                      var td03 = trobject.children[2];
 87                      td03.innerHTML = "<a href=‘#‘ onclick=‘tdSave(this);‘>保全</a> <a href=‘#‘ onclick=‘tdCancel(this);‘>取消</a>"
 88                     }
 89                 }
 90             }
 91             //////////
 92             //全选反选全删
 93             document.getElementById("ckall").onclick = function () {
 94                 var ckobjects = document.getElementsByClassName("ck01");
 95                 for (var i = 0; i < ckobjects.length; i++) {
 96                     ckobjects[i].checked = this.checked;
 97                 }
 98             }
 99             //选择性多删
100             document.getElementById("DeleteAll").onclick = function () {
101                 var ckobjects = document.getElementsByClassName("ck01");
102                 for (var i = ckobjects.length-1; i >=0; i--)
103                 {
104                     if (ckobjects[i].checked == true)
105                     {
106                         var trobject = ckobjects[i].parentNode.parentNode;
107                         trobject.parentNode.removeChild(trobject);
108                     }
109                 }
110             }
111
112         }
113
114         //结束onload
115
116         //单行删!!!!当触发a标签的点击事件时,a标签不在onload之内,应在a标签加进来的时候立即加上onclick事件
117             function Deltr(aObj) {
118                 var trobj = aObj.parentNode.parentNode;
119                 trobj.parentNode.removeChild(trobj);
120             }
121         //保全菜单
122             function tdSave(tdobj) {
123                 //得到tr 需要保全的td
124                 var trobj = tdobj.parentNode.parentNode;
125                 var td2 = trobj.children[1]
126                 ////
127                 var tdinput = td2.children[0].value;
128
129                 //替换td的innerHTML
130                 td2.innerHTML = tdinput;
131                 //替换a标签
132                 td2.parentNode.children[2].innerHTML = "<a href=‘#‘ onclick=‘Deltr(this);‘>删除</a>  <a href=‘#‘ class=‘edit‘>编辑</a>";
133                 //同样插入新元素a标签,需要一并将onclick事件注册给它,这样其实代码很多冗余,建议还是在标签内绑定onclick事件
134                 var editobjets = document.getElementsByClassName("edit");
135                 for (var j = 0; j < editobjets.length; j++) {
136                     editobjets[j].onclick = function () {
137                         //得到行
138                         var trobject = this.parentNode.parentNode;
139                         //替换行第二列为txt
140                         var td02 = trobject.children[1];
141                          oldinnerhtml = td02.innerHTML;
142                         td02.innerHTML = "<input type=‘Text‘ value=‘" + oldinnerhtml + "‘/>";
143                         td02.children[0].focus();
144                         td02.children[0].select();
145                         //替换第三列a标签为保全,取消
146                         var td03 = trobject.children[2];
147                         td03.innerHTML = "<a href=‘#‘ onclick=‘tdSave(this);‘>保全</a> <a href=‘#‘ onclick=‘tdCancel(this);‘>取消</a>"
148                     }
149                 }
150             }
151
152         //取消
153             function tdCancel(tdobj)
154             {
155                 //取到全局变量存储的保全前的值
156                // alert(oldinnerhtml);
157                 //将该值替换this的parernode.parentnode.children[1].children[0].innerhtml
158                 tdobj.parentNode.parentNode.children[1].innerHTML = oldinnerhtml;
159                 //替换a标签
160                 tdobj.parentNode.parentNode.children[2].innerHTML = "<a href=‘#‘ onclick=‘Deltr(this);‘>删除</a>  <a href=‘#‘ class=‘edit‘>编辑</a>";
161                 //同样插入新元素a标签,需要一并将onclick事件注册给它,这样其实代码很多冗余,建议还是在标签内绑定onclick事件
162                 var editobjets = document.getElementsByClassName("edit");
163                 for (var j = 0; j < editobjets.length; j++) {
164                     editobjets[j].onclick = function () {
165                         //得到行
166                         var trobject = this.parentNode.parentNode;
167                         //替换行第二列为txt
168                         var td02 = trobject.children[1];
169                         oldinnerhtml = td02.innerHTML;
170                         td02.innerHTML = "<input type=‘Text‘ value=‘" + oldinnerhtml + "‘/>";
171                         td02.children[0].focus();
172                         td02.children[0].select();
173                         //替换第三列a标签为保全,取消
174                         var td03 = trobject.children[2];
175                         td03.innerHTML = "<a href=‘#‘ onclick=‘tdSave(this);‘>保全</a> <a href=‘#‘ onclick=‘tdCancel(this);‘>取消</a>"
176                     }
177                 }
178             }
179     </script>
180 </head>
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201 <body>
202     <div>
203         <input type="button"  value="新增菜单" id="btnAddmenu"/>
204         <label>菜单:</label>
205         <select id="foodList">
206         <option>蛋炒饭</option>
207         <option>火锅</option>
208         <option>红烧肉</option>
209         </select>
210
211     </div>
212     <div><input type="button" value="加订单"  id="btnAddTr"/></div>
213     <table id="tbid01">
214         <tr>
215             <td>序号</td>
216             <td>菜名</td>
217             <td>编辑</td>
218
219         </tr>
220     </table>
221     <div><input type="checkbox" id="ckall"/>
222         <a href="#" id="DeleteAll">删除选中</a>
223     </div>
224 </body>
225 </html>

代码

时间: 2024-12-18 11:56:00

js初级练习2(增删改)的相关文章

JS+JavaBean判断管理员增删改的操作权限

目标:用户分管理员和普通用户2种,都可以登陆,但是管理员才可以执行增删改的权限,普通用户可以看,但是执行的时候提示权限不足 帖代码片段:我只会这一种,在JSP页面判断 省略得权限数值方法: <% String username = (String)session.getAttribute("username"); UserService userService=new UserServiceImpl(); System.out.println("username====

js基础(dom增删改)

新增节点: /* * document.createElement() * 可以用于创建一个元素节点对象, * 它需要一个标签名作为参数,将会根据该标签名创建元素节点对象, * 并将创建好的对象作为返回值返回 */ var li = document.createElement("li"); /* * document.createTextNode() * 可以用来创建一个文本节点对象 * 需要一个文本内容作为参数,将会根据该内容创建文本节点,并将新的节点返回 */ var gzTex

SSM整合初级 简单的增删改查

1.jar包 2.mybatis-config.xm配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration

js 操作json对象增删改

//将表单序列化成字符串 $.fn.serializeObject = function () { var obj = {}; var count = 0; $.each(this.serializeArray(), function (i, o) { var n = o.name, v = o.value; count++; obj[n] = obj[n] === undefined ? v : $.isArray(obj[n]) ? obj[n].concat(v) : [obj[n], v

JS实现表格的增删改

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">    <html>    <head>    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

js中数组的增删改查

1 slice选取数组的的一部分,并返回一个新数组 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <p id="demo">点击按钮截取数组下标 1 到 2 的元素.</p> <button onclick="m

js 创建链表(增删改查)

话说面试又失败了,今年真是坎坷的一年,女朋友跑了,工作不顺,家里催婚,大学刚毕业,大公司不要.在这个没钱没人的年纪,有点小绝望.不多说直接上代码: /*======定义结构======*/ var node=function(element){ this.element=element this.next=null } var linkedList=function(){ this.head=new node("head") this.find=find this.insert=ins

用js实现表格的增删改

1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <meta http-equiv="X-UA-Compat

原生js对bom的增删改查

### 查询(获取节点) ## 获取节点 (只要是获取到的是数组形式的,就需要在后面加[x],来决定获取第几个节点) + var el = document.querySelector('.class/#id/li') [ 根据选择器(类名,id,标签名)获取节点,只能获取一个 ] + var el = document.querySelectorAll('.class/#id/li')    [ 根据选择器(类名,id,标签名)获取节点,会获取所有的,返回一个数组 ] + var el = d

Node.js、express、mongodb 入门(基于easyui datagrid增删改查)

前言 从在本机(win8.1)环境安装相关环境到做完这个demo大概不到两周时间,刚开始只是在本机安装环境并没有敲个Demo,从周末开始断断续续的想写一个,按照惯性思维就写一个增删改查吧,一方面是体验下node.js的魔力,二就是看看node.js.express和mongoose的API,其次就是把自己入门的过程记录下来,方便自己查看,再就是对入门的朋友起一个引导的作用. 敲demo的过程中感觉最爽的就是npm(Node Package Manager)是一个Node.js的包管理和分发工具.