一、编写live.html页面,1、JavaScript实现表格的隔行换色,并且当鼠标移过时当前行高亮显示;2、是输出表格中的abbr标签的内容

实现后的效果图是这样的:

1、实现思路

在输出表格的时候,给出一个判断,如果偶数或是奇数行我们想换色,则添加一个class为odd的值,在这个class里就设置了表格不同颜色tr行。

这里用到了一个判断函数:(下面是两个不同的方法,任选其一)

  1. 法一: //隔行换色 添加class属性
  2. for(var i =0; i<tables.length; i++){
  3. var odd = false;
  4. var rows = tables[i].getElementsByTagName("tr"); //获取表格里的函数rows
  5. for(var j=0; j<rows.length; j++){
  6. if(odd == true){
  7. addClass(rows[j],"odd");
  8. odd = false;
  9. }else{
  10. odd = true;
  11. }
  12. }
  13. }
  1. 法二: for(var i =0; i<tables.length; i++){
  2. var rows = tables[i].getElementsByTagName("tr"); //获取表格里的函数rows
  3. for(var j=0; j<rows.length; j++){
  4. if(j%2 == 0){
  5. addClass(rows[j],"odd"); //偶数行时,添加class为odd的值
  6. }
  7. }
  8. }

法一中,是使用一个odd标识来实现隔行换色,刚开始设置odd表示为false,然后进入循环后,判断,如果odd是true则添加class为odd的值,否则则设置为true,这样在第二次循环时,读到的便是odd=true,读到是true后,又设置为false,这样在下次读取又是false,就不设置class =odd,就达到了隔行设置class=odd,实现隔行换色。

法二中,更直接。判断第二次循环的参数j,与2取模后,结果是否0来确定是否添加class = odd。

2、代码

(1)首先,把template.html中的代码拷贝到live.html中,将div 的id为content的部分,写入如下:

  1. <h1> Tour dates</h1>
  2. <table summary="when and where you can see the band">
  3. <thead>
  4. <tr>
  5. <th>Date</th>
  6. <th>City</th>
  7. <th>Venue</th>
  8. </tr>
  9. </thead>
  10. <tbody>
  11. <tr>
  12. <td>June 9th</td>
  13. <td>Portland,<abbr title="Oregon">OR</abbr></td>
  14. <td>Crystal Ballroom</td>
  15. </tr>
  16. <tr>
  17. <td>June 9th</td>
  18. <td>Portland,<abbr title="Washington">WA</abbr></td>
  19. <td>Crystal Ballroom</td>
  20. </tr>
  21. <tr>
  22. <td>June 9th</td>
  23. <td>Portland,<abbr title="California">CA</abbr></td>
  24. <td>Crystal Ballroom</td>
  25. </tr>
  26. <tr>
  27. <td>June 9th</td>
  28. <td>Portland,<abbr title="Texas">TX</abbr></td>
  29. <td>Crystal Ballroom</td>
  30. </tr>
  31.  
  32. </tbody>
  33. </table>

(2)然后,修改webdesign.css、color.css、typography.css文件

  1. td{
  2. padding: .5em 3em;
  3. }
  4.  
  5. /**********live.html*************************/
  6. dl{
  7. overflow: hidden;
  8. }
  9. dt{
  10. float: left;
  11. }
  12. dd{
  13. float: left;
  14. }
  1. tr.odd td{
  2. color: #233;
  3. background-color: #ec8;
  4. }
  5. tr.highlight td{
  6. color: #223;
  7. background-color: #cba;
  8. }
  1. dt{
  2. margin-right: 1em;
  3. }
  4. dd{
  5. margin-right: 3em;
  6. }

(3)最后,创建live.js文件,来为页面编写JavaScript效果

  1. /*******************给表格的偶数行添加样式*********************/
  2. function stripeTables(){
  3. //旧浏览器对象检测
  4. if(!document.getElementsByTagName) return false;
  5.  
  6. //获取元素
  7. var tables = document.getElementsByTagName("table");
  8.  
  9. //隔行换色 添加class属性
  10. for(var i =0; i<tables.length; i++){
  11. var odd = false;
  12. var rows = tables[i].getElementsByTagName("tr"); //获取表格里的函数rows
  13. for(var j=0; j<rows.length; j++){
  14. if(odd == true){
  15. alert(odd);
  16. addClass(rows[j],"odd");
  17. odd = false;
  18. }else{
  19. odd = true;
  20. }
  21. }
  22. }
  23.  
  24. /*for(var i =0; i<tables.length; i++){
  25. var rows = tables[i].getElementsByTagName("tr"); //获取表格里的函数rows
  26. for(var j=0; j<rows.length; j++){
  27. if(j%2 == 0){
  28. addClass(rows[j],"odd"); //偶数行时,添加class为odd的值
  29. }
  30. }
  31. }*/
  32.  
  33. }
  34.  
  35. /*****************鼠标浮动行高亮显示**************************/
  36. function highlightRows(){
  37. //旧浏览器对象检测
  38. if(!document.getElementsByTagName) return false;
  39.  
  40. //获取元素
  41. var rows = document.getElementsByTagName("tr");
  42.  
  43. //高亮显示 鼠标移上则给这一行动态添加一个新class属性,鼠标移开则重新赋值为原来的class属性
  44. for(var i=0; i<rows.length; i++){
  45. rows[i].oldClassName = rows[i].className; //把tr的class属性保存起来
  46. rows[i].onmouseover = function(){
  47. addClass(this,"highlight"); //鼠标经过时添加clas为highlight的值
  48. }
  49. rows[i].onmouseout = function(){
  50. this.className = this.oldClassName; //鼠标移开,还原之前的class值
  51. }
  52. }
  53. }
  54.  
  55. /*****************输出缩略词表********************************/
  56. function displayAbbreviations(){
  57. //旧浏览器对象检测
  58. if(!document.getElementsByTagName || !document.createElement || !document.createTextNode) return false;
  59.  
  60. //获取元素
  61. var abbreviation = document.getElementsByTagName("abbr");
  62. if(abbreviation.length <1) return false; //如果没有abbr标签存在,则退出执行;否则,把abbr的title存入关联数组
  63. var defs = new Array();
  64. for(var i=0; i<abbreviation.length; i++){
  65. var current_abbr = abbreviation[i];
  66. if(current_abbr.childNodes.length<1) continue; //如果有abbr标签,却没有直接点,说明是没有内容的abbr,则退出本次循环
  67. var definition = current_abbr.getAttribute("title"); //获取abbr的title属性值
  68. var key = current_abbr.lastChild.nodeValue;
  69. alert(key);
  70. defs[key] = definition;
  71. }
  72.  
  73. //输出缩略词的表格
  74. var dlist = document.createElement("dl");
  75. for(key in defs){
  76. var definition = defs[key];
  77. var dtitle = document.createElement("dt");
  78. var dtitle_text = document.createTextNode(key);
  79. dtitle.appendChild(dtitle_text);
  80. var ddesc = document.createElement("dd");
  81. var ddesc_text = document.createTextNode(definition);
  82. ddesc.appendChild(ddesc_text);
  83. dlist.appendChild(dtitle);
  84. dlist.appendChild(ddesc);
  85. }
  86.  
  87. if(dlist.childNodes.length < 1) return false;
  88. var header = document.createElement("h3");
  89. var header_text = document.createTextNode("Abbrviations");
  90. header.appendChild(header_text);
  91.  
  92. var container = document.getElementById("content");
  93. container.appendChild(header);
  94. container.appendChild(dlist);
  95. }
  96.  
  97. addLoadEvent(stripeTables);
  98. addLoadEvent(highlightRows);
  99. addLoadEvent(displayAbbreviations);

ok了。现在打开谷歌浏览器就可以看到隔行换色的表格了。

二、学与思

1、设置标志var odd = false;

这是一个不错的方法,不用像第二个方法那样,进行取模运算,虽然取模运算更容易理解,但是毕竟要计算。

还未进入循环时,设置为false,进来后if判断,判断为真,添加class= odd后,再次让标志位false,进入到下一次循环中。

2、节点的创建和挂载。

JavaScript网站设计实践(六)编写live.html页面 改进表格显示的更多相关文章

  1. JavaScript网站设计实践(一)网站结构以及页面效果设计

    这是JavaScript DOM编程艺术里的构建JavaScript网站设计的例子,这本书给我学习JavaScript带来许多启发,在这个乐队宣传网站中,把前面学到的知识点整合在这个项目了.在这里记录 ...

  2. JavaScript网站设计实践(四)编写about.html页面,利用JavaScript和DOM,选择性的显示和隐藏DIV元素

    一.现在我们在网站设计(三)的基础上,来编写about.html页面. 这个页面要用到的知识点是利用JavaScript和DOM实现选择性地显示和隐藏某些DIV about.html页面在前面我们为了 ...

  3. JavaScript网站设计实践(三)设计有特色的主页,给主页链接添加JavaScript动画脚本

    一.主页一般都会比较有特色,现在在网站设计(二)实现的基础上,来给主页添加一点动画效果. 1.这里实现的动画效果是:当鼠标悬停在其中某个超链接时,会显示出属于该页面的背景缩略图,让用户知道这个链接的页 ...

  4. JavaScript网站设计实践(五)编写photos.html页面,实现点击缩略图显示大图的效果

    一.photos.html页面,点击每一张缩略图,就在占位符的位置那里,显示对应的大图. 看到的页面效果是这样的: 1.实现思路 这个功能在之前的JavaScript美术馆那里已经实现了. 首先在页面 ...

  5. JavaScript网站设计实践(七)编写最后一个页面 改进表单

    一.最后一个页面 contact.html.改进表单 在该页面实现的功能: 几乎所有的网站都会有表单填写,对于用户输入和填写的数据,首先我们一般现在前台验证,然后再去后台验证. 在前台最简单的验证:检 ...

  6. JavaScript网站设计实践(二)实现导航栏当前所选页面的菜单项高亮显示

    一.(一)中的代码还可以修改的地方. 在(一)中,如果是运行在服务器下,如apache等,可以把head和navigation的div抽取出来,放置在另一个html文件里,然后在页面中,include ...

  7. [书目20131223]Android、iPhone、Windows Phone手机网页及网站设计:最佳实践与设计精粹 - 张亚飞

    目录 第I篇 手机版专用网站设计和开发入门篇 第1章 准备创作环境和测试环境 3 1.1 使用Mobile Safari测试网页 4 1.1.1 iOS Simulator安装 5 1.1.2 使用M ...

  8. 优化网站设计(十):最小化JAVASCRIPT和CSS

    前言 网站设计的优化是一个很大的话题,有一些通用的原则,也有针对不同开发平台的一些建议.这方面的研究一直没有停止过,我在不同的场合也分享过这样的话题. 作为通用的原则,雅虎的工程师团队曾经给出过35个 ...

  9. web设计经验<六>令网站看起来不专业的10个设计误区

    不管你是不是一个羽翼未丰企业的领导,专业的网站能为你带来的东西比你想象的多很多.退一万步来说,“考虑到我们是一个小厂”,粗糙的网站也许能被用户理解,但是不一定能接受.每天大家所浏览的大量的网站,已经从 ...

随机推荐

  1. OpenGL学习之路(五)

    1 引子 不知不觉我们已经进入到读书笔记(五)了,我们先对前四次读书笔记做一个总结.前四次读书笔记主要是学习了如何使用OpenGL来绘制几何图形(包括二维几何体和三维几何体),并学习了平移.旋转.缩放 ...

  2. 【转】Tomcat配置文件入门

    Tomcat 基本配置 tomcat读取配置文件 首先简单说一下tomcat是如何读取配置文件的.tomcat在启动时,首先找系统变量CATALINA_BASE,如果没有,则找CATALINA_HOM ...

  3. MVC Action Filter

    ASP.NET MVC Framework支持四种不同类型的Filter: Authorization filters – 实现IAuthorizationFilter接口的属性. Action fi ...

  4. [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.3.7

    For every matrix $A$, the matrix $$\bex \sex{\ba{cc} I&A\\ 0&I \ea} \eex$$ is invertible and ...

  5. Selenium webdriver 之select 控件封装,解决onchange问题

    使用webdriver的时候,select 控件经常会绑定onchange 事件,在selenium2.09 之前click 方法对onchange 事件有bug,2.09 以后修复了,但是根据经验也 ...

  6. win7 开wifi热点

    开启windows 7的隐藏功能:虚拟WiFi和SoftAP(即虚拟无线AP),就可以让电脑变成无线路由器,实现共享上网,节省网费和路由器购买费. 1.启用并设定虚拟WiFi网卡: 运行命令:nets ...

  7. 矩阵取数游戏 NOIP 2007

    2016-05-31 17:26:45 题目链接: NOIP 2007 矩阵取数游戏(Codevs) 题目大意: 给定一个矩阵,每次在每一行的行首或者行尾取一个数乘上2^次数,求取完最多获得的分数 解 ...

  8. CoreSeek中文检索引擎

    目的:安装coreseek中文检索引擎,配置MySQL数据库访问接口,使用PHP程序实现中文检索. CoreSeek官方网站: http://www.coreseek.cn/ http://www.c ...

  9. Java深度遍历文件夹(递归实现)

    package FileDemo; import java.io.File; public class DeepSearchDir { /** * @param args */ public stat ...

  10. 字符流缓冲区的使用之BufferedWriter和BufferedReader

    从字符输入流中读取文本,缓冲各个字符,从而实现字符.数组和行的高效读取,代码中使用了输入缓冲区的特有的方法:readLine(),获取一行文本数据 import java.io.BufferedRea ...