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>