前端组件练习
2017-04-24 22:26
176 查看
1.请写一个表格以及对应的CSS,使表格奇数行为白色背景,偶数行为灰色背景,鼠标移上去时为黄色背景。
知识点:
标签table下包含三钟标签:th(head)表格的头,tr(row)表格的行,td表格单元。
:nth-child()选择器是CSS3中的内容,比如p:nth-child(3)是选择在元素p的父元素下(即与p同级),第3个p元素。
:hover选择器是CSS1中的内容,选择当鼠标指向该元素时。
2.有一个包含数据列表的页面,数据行数不确定。每一行数据都有一个删除按钮,单击删除按钮删除该列数据,请用JavaScript实现该功能。
知识点: 事件代理、DOM操作、IE兼容性
我们可以给每个按钮绑定一个事件,但这样不高效。我们需要使用事件代理(委托),利用事件冒泡,给按钮的上层元素绑定事件,然后根据事件对象event来判断那个按钮被触发了。
IE事件和DOM事件是不一样的,这里我们就需要考虑兼容性的代码。或操作符
【Reference】
1. 【前端】2015阿里前端实习生在线笔试题http://www.cnblogs.com/forzhaokang/p/5184682.html
知识点:
标签<table>、
选择器nth-child、
选择器:hover
标签table下包含三钟标签:th(head)表格的头,tr(row)表格的行,td表格单元。
<table border="1"> <tr> <th>Month</th> <th>Savings</th> </tr> <tr> <td>January</td> <td>$100</td> </tr> </table>
:nth-child()选择器是CSS3中的内容,比如p:nth-child(3)是选择在元素p的父元素下(即与p同级),第3个p元素。
:hover选择器是CSS1中的内容,选择当鼠标指向该元素时。
<table class="table"> <tr><td>11111</td></tr> <tr><td>22222</td></tr> <tr><td>33333</td></tr> <tr><td>44444</td></tr> </table> <style> .table tr:nth-child(2n-1){ background-color:white; } .table tr:nth-child(2n){ background-color:grey; } .table tr:hover{ background-color:yellow; } </style>
2.有一个包含数据列表的页面,数据行数不确定。每一行数据都有一个删除按钮,单击删除按钮删除该列数据,请用JavaScript实现该功能。
知识点: 事件代理、DOM操作、IE兼容性
我们可以给每个按钮绑定一个事件,但这样不高效。我们需要使用事件代理(委托),利用事件冒泡,给按钮的上层元素绑定事件,然后根据事件对象event来判断那个按钮被触发了。
IE事件和DOM事件是不一样的,这里我们就需要考虑兼容性的代码。或操作符
||在兼容性代码中可替代
if else判断。
//DOM事件中,事件对象会被传入到回调函数中 //IE事件中,如果不是调用attachEvent()函数,获取事件对象就需要访问全局的window.event。 var ev = event || window.event; //DOM和IE的事件对象属性也不同 //target是DOM事件,srcElement是IE事件。 var target = ev.target || ev.srcElement;
<ul> <li>一<button>删除一</button></li> <li>二<button>删除二</button></li> <li>三<button>删除三</button></li> </ul> <script> window.addEventListener('load', function () { var ul = document.getElementsByTagName('ul')[0]; ul.addEventListener('click', function (ev) { ev = ev || window.event; var target = ev.target || ev.srcElement; // 当点击的元素===button元素时,移除此button所属的li元素 if (target.tagName.toLowerCase() === 'button') { var li = target.parentNode; li.parentNode.removeChild(li); } }); }); // 另一种写法(不推荐): // window.onload = function () { // var btnArr = document.getElementsByTagName('button'); // for (var i in btnArr) { // btnArr[i].onclick = function (ev) { // var ev = ev || window.event; // var target = ev.target || ev.srcElement; // var li = target.parentNode; // li.parentNode.removeChild(li); // }; // } // }; </script>
【Reference】
1. 【前端】2015阿里前端实习生在线笔试题http://www.cnblogs.com/forzhaokang/p/5184682.html
相关文章推荐
- 几个前端学习练习!
- 前端笔试练习六
- 前端试题大综合练习(七)
- 七周七种前端框架四:Vue.js 组件和组件通信
- jmgraph前端画图组件(html5版)
- Material Design Lite,简洁惊艳的前端工具箱 之 布局组件。
- Material Design Lite,简洁惊艳的前端工具箱 之 容器组件。
- 网站前端_EasyUI.基础入门.0003.使用EasyUI Panel组件的最佳姿势?
- [Web前端技术教学]CSS列表样式范例练习-无序列表-1
- 前端组件库大合集-必备收藏
- 【转】前端上传组件Plupload使用指南
- Bootstrap 组件练习
- 中文前端UI框架Kit(八)无插件异步文件上传组件源码解析
- 前端学习笔记番外篇:仿WIN8 Metro UI DIV+CSS练习
- 前端技能练习2:获取URL参数
- EasyDSS RTMP流媒体服务器web前端:vue组件之间的传值,父组件向子组件传值
- 前端上传组件Plupload使用指南 与swfupload一样强大
- 前端试题大综合练习(二)
- 这 5 个前端组件库,可以让你放弃 jQuery UI
- JS组件系列——又一款MVVM组件:Vue(一:30分钟搞定前端增删改查)