一道DOM操作题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一道DOM操作题相关的知识,希望对你有一定的参考价值。

创建一个表格,表头为姓名,性别,年龄,班级

1. 点击单元格内的内容,弹窗输入值,修改单元格内原有数据;

2. 设置加粗,标红按钮,在修改完单元格内容后显示按钮并能够对修改的内容进行样式改变;

3. 设置添加按钮,点击添加一行新的单元格(4个);

代码如下:

 1 <!doctype html>
 2 <html>
 3 <head>
 4 <meta charset="utf-8">
 5 <title>无标题文档</title>
 6 <style>//首先在head标签中设置了表格样式,以及两个按钮的隐藏
 7     td{
 8         height: 50px;
 9         text-align: center;
10     }    
11     table{
12         margin: auto;
13         width: 80%;
14     }
15     .button{
16         visibility: hidden;
17     }
18 </style>
19 </head>
20 
21 <body>
22 <script>
23     var td_obj;//一个全局变量
24 //第一个函数设置为点击弹窗修改内容,但其中包含了几条作用于其他函数的设置,多个函数之间相互都有关联
25     function one(obj){
26         td_obj = obj;//此行为加粗标红按钮设置,使这两个按钮只对当前修改的单元格内容起效
27         obj.innerHTML = prompt("");//弹窗
28         //obj.setAttribute("abc","q"); //给所有td标签一个自定义属性,为了实现标红加粗两个按钮的功能而设置,是另一种方法,下文中被注释掉的代码
29         document.getElementById("bold").style.visibility = "visible";//点击修改后显示两个按钮
30         document.getElementById("red").style.visibility = "visible";
31 
32     }
33 //第二个函数设置为添加单元格
34     function two(){
35         var a = document.getElementById("table");//获取表格元素
36         var b = document.createElement("tr");//获取行元素
37         //4个单元格利用for循环循环添加,使一行中有4个单元格
38         for(i=0;i<4;i++){
39             var c = document.createElement("td");//创建单元格
40             c.setAttribute("onClick","one(this)")//赋予单元格onClick属性以及调用的函数
41             b.appendChild(c);//将创建的单元格追加至行            
42         }
43         a.appendChild(b);//将循环完成的行添加至表格
44     }
45     //第三个函数设置加粗标红按钮的样式
46     function three(obj){
47         td_obj.style.fontWeight = "bold";//全局变量作用于此行
48         obj.style.visibility = "visible";//完成加粗后按钮消失
49 //下面被注释掉的代码是另一种方法,比较麻烦,上面的是老师带着他的高级装备打怪的战利品 - -!
50 //        var a =   document.getElementsByTagName("td"); //get到所有td中的内容
51 //        for(i=0;i<a.length;i++){                       //利用for循环查找所有包含自定义属性abc的td标签
52 //            var aa = a[i].getAttribute("abc");
53 //            if(aa == "q"){                             //如果这个变量的值 == 自定义属性abc的值q,则执行加粗变化
54 //                a[i].style.fontWeight = "bold";
55 //                a[i].removeAttribute("abc");      //为了使加粗不会将所有的td内容改变,删除已被修改内容的td标签的自定义属性abc,使abc属性始终唯一的存在与一个td标签中          
56 //            }
57 //        }    
58     }
59     function four(obj){
60             td_obj.style.color = "red";
61 //        //obj.style.visibility = "visible";
62 //        var a = document.getElementsByTagName("td");
63 //        for(i=0;i<a.length;i++){
64 //            var aa = a[i].getAttribute("abc");
65 //            if(aa == "q"){
66 //                a[i].style.color = "red";
67 //                a[i].removeAttribute("abc");
68 //            }
69 //        }
70     }
71 </script>
72 <button onClick="two()">添加</button>
73 <button class="button" id="bold" onClick="three(this)">加粗</button>
74 <button class="button" id="red" onClick="four(this)">标红</button>
75 <table id="table" border="1" cellspacing="0">
76     <tr>
77         <td>姓名</td>
78         <td>性别</td>
79         <td>年龄</td>    
80         <td>班级</td>
81     </tr>
82     <tr>
83         <td onClick="one(this)">张三</td>
84         <td onClick="one(this)">男</td>
85         <td onClick="one(this)">15</td>    
86         <td onClick="one(this)">101</td>
87     </tr>
88 </table>
89 </body>
90 </html>            

总结:1、3两个题目是自己想出来的,写的也挺冗余,但是思路还算清晰,没有费时太久,第2个题目是一点想法都没有,在老师指导下,获取所有td中的值传给两个按钮并实现了题目要求

以上是关于一道DOM操作题的主要内容,如果未能解决你的问题,请参考以下文章

头条前端笔试最后一道题

一道经典面试题:字符串在Java中如何通过“引用”传递

计算机操作系统关于PV操作的一道题

由一道小题谈谈JS的new操作符

使用 JQuery ajax 在 DOM 操作后附加事件

每天一道前端面试题:如何进行网站性能优化