JavaScript网站设计实践(六)编写live.html页面 改进表格显示

简介: 原文:JavaScript网站设计实践(六)编写live.html页面 改进表格显示一、编写live.html页面,1、JavaScript实现表格的隔行换色,并且当鼠标移过时当前行高亮显示;2、是输出表格中的abbr标签的内容 实现后的效果图是这样的: 1、实现思路 在输出表格的时候,给出一个判断,如果偶数或是奇数行我们想换色,则添加一个class为odd的值,在这个class里就设置了表格不同颜色tr行。
原文: JavaScript网站设计实践(六)编写live.html页面 改进表格显示

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

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

1、实现思路

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

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

法一:
//
隔行换色 添加class属性 for(var i =0; i<tables.length; i++){ var odd = false; var rows = tables[i].getElementsByTagName("tr"); //获取表格里的函数rows for(var j=0; j<rows.length; j++){ if(odd == true){ addClass(rows[j],"odd"); odd = false; }else{ odd = true; } } }

 

 

法二:
for
(var i =0; i<tables.length; i++){ var rows = tables[i].getElementsByTagName("tr"); //获取表格里的函数rows for(var j=0; j<rows.length; j++){ if(j%2 == 0){ addClass(rows[j],"odd"); //偶数行时,添加class为odd的值 } } }

 

法一中,是使用一个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的部分,写入如下:

<h1> Tour dates</h1>
            <table summary="when and where you can see the band">
                <thead>
                    <tr>
                        <th>Date</th>
                        <th>City</th>
                        <th>Venue</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>June 9th</td>
                        <td>Portland,<abbr title="Oregon">OR</abbr></td>
                        <td>Crystal Ballroom</td>
                    </tr>
                    <tr>
                        <td>June 9th</td>
                        <td>Portland,<abbr title="Washington">WA</abbr></td>
                        <td>Crystal Ballroom</td>
                    </tr>
                    <tr>
                        <td>June 9th</td>
                        <td>Portland,<abbr title="California">CA</abbr></td>
                        <td>Crystal Ballroom</td>
                    </tr>
                    <tr>
                        <td>June 9th</td>
                        <td>Portland,<abbr title="Texas">TX</abbr></td>
                        <td>Crystal Ballroom</td>
                    </tr>
                    
                </tbody>
            </table>
View Code

 

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

td{
    padding: .5em 3em;
}

/**********live.html*************************/
dl{
    overflow: hidden;
}
dt{
    float: left;
}
dd{
    float: left;
}
View Code

  

tr.odd td{
    color: #233;
    background-color: #ec8;
}
tr.highlight td{
    color: #223;
    background-color: #cba;
}
View Code

 

dt{
    margin-right: 1em;
}
dd{
    margin-right: 3em;
}
View Code

 

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

/*******************给表格的偶数行添加样式*********************/
function stripeTables(){
    //旧浏览器对象检测
    if(!document.getElementsByTagName) return false;
    
    //获取元素
    var tables = document.getElementsByTagName("table");
    
    //隔行换色  添加class属性
    for(var i =0; i<tables.length; i++){
        var odd = false;
        var rows = tables[i].getElementsByTagName("tr");         //获取表格里的函数rows
        for(var j=0; j<rows.length; j++){
            if(odd == true){                                     
                alert(odd);
                addClass(rows[j],"odd");
                odd = false;
            }else{
                odd = true;
            }
        }
    }
    
    /*for(var i =0; i<tables.length; i++){
        var rows = tables[i].getElementsByTagName("tr");         //获取表格里的函数rows
        for(var j=0; j<rows.length; j++){
            if(j%2 == 0){
                addClass(rows[j],"odd");                         //偶数行时,添加class为odd的值
            }
        }
    }*/
    
}


/*****************鼠标浮动行高亮显示**************************/
function highlightRows(){
    //旧浏览器对象检测
    if(!document.getElementsByTagName) return false;
    
    //获取元素
    var rows = document.getElementsByTagName("tr");
    
    //高亮显示    鼠标移上则给这一行动态添加一个新class属性,鼠标移开则重新赋值为原来的class属性
    for(var i=0; i<rows.length; i++){
        rows[i].oldClassName = rows[i].className;            //把tr的class属性保存起来
        rows[i].onmouseover = function(){
            addClass(this,"highlight");                       //鼠标经过时添加clas为highlight的值
        }
        rows[i].onmouseout = function(){
            this.className = this.oldClassName;               //鼠标移开,还原之前的class值
        }
    }
}

/*****************输出缩略词表********************************/
function displayAbbreviations(){
    //旧浏览器对象检测
    if(!document.getElementsByTagName || !document.createElement || !document.createTextNode) return false;
    
    //获取元素
    var abbreviation = document.getElementsByTagName("abbr");
    if(abbreviation.length <1) return false;                  //如果没有abbr标签存在,则退出执行;否则,把abbr的title存入关联数组
    var defs = new Array();
    for(var i=0; i<abbreviation.length; i++){
        var current_abbr = abbreviation[i];
        if(current_abbr.childNodes.length<1) continue;        //如果有abbr标签,却没有直接点,说明是没有内容的abbr,则退出本次循环
        var definition = current_abbr.getAttribute("title");  //获取abbr的title属性值
        var key = current_abbr.lastChild.nodeValue;
        alert(key);
        defs[key] = definition;
    }
    
    //输出缩略词的表格
    var dlist = document.createElement("dl");
    for(key in defs){
        var definition = defs[key];
        var dtitle = document.createElement("dt");
        var dtitle_text = document.createTextNode(key);
        dtitle.appendChild(dtitle_text);
        var ddesc = document.createElement("dd");
        var ddesc_text = document.createTextNode(definition);
        ddesc.appendChild(ddesc_text);
        dlist.appendChild(dtitle);
        dlist.appendChild(ddesc);
    }
    
    if(dlist.childNodes.length < 1) return false;
    var header = document.createElement("h3");
    var header_text = document.createTextNode("Abbrviations");
    header.appendChild(header_text);
    
    var container = document.getElementById("content");
    container.appendChild(header);
    container.appendChild(dlist);
}



addLoadEvent(stripeTables);
addLoadEvent(highlightRows);
addLoadEvent(displayAbbreviations);
View Code

 

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

 

二、学与思

1、设置标志var odd = false;

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

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

2、节点的创建和挂载。

 

 

 

 

 

目录
相关文章
|
前端开发 算法 API
构建高性能图像处理Web应用:Next.js与TailwindCSS实践
本文分享了构建在线图像黑白转换工具的技术实践,涵盖技术栈选择、架构设计与性能优化。项目采用Next.js提供优秀的SSR性能和SEO支持,TailwindCSS加速UI开发,WebAssembly实现高性能图像处理算法。通过渐进式处理、WebWorker隔离及内存管理等策略,解决大图像处理性能瓶颈,并确保跨浏览器兼容性和移动设备优化。实际应用案例展示了其即时处理、高质量输出和客户端隐私保护等特点。未来计划引入WebGPU加速、AI增强等功能,进一步提升用户体验。此技术栈为Web图像处理应用提供了高效可行的解决方案。
|
8月前
|
编解码 前端开发 JavaScript
js react antd 实现页面低分变率和高分变率下字体大小自适用,主要是配置antd
在React中结合Ant Design与媒体查询,通过less变量和响应式断点动态调整`@font-size-base`,实现多分辨率下字体自适应,提升跨设备体验。
441 2
|
前端开发 JavaScript Java
【Java进阶】JavaScript电灯开关实例:从理论到实践
这个例子展示了JavaScript的基本功能,包括操作HTML元素,监听事件,以及改变元素的样式。通过学习和理解这个例子,你可以了解到JavaScript在网页中的应用,以及如何使用JavaScript来创建交互式的网页。
239 13
简约404错误页面HTML源码
简约404错误页面HTML源码
464 12
|
数据采集 前端开发 JavaScript
金融数据分析:解析JavaScript渲染的隐藏表格
本文详解了如何使用Python与Selenium结合代理IP技术,从金融网站(如东方财富网)抓取由JavaScript渲染的隐藏表格数据。内容涵盖环境搭建、代理配置、模拟用户行为、数据解析与分析等关键步骤。通过设置Cookie和User-Agent,突破反爬机制;借助Selenium等待页面渲染,精准定位动态数据。同时,提供了常见错误解决方案及延伸练习,帮助读者掌握金融数据采集的核心技能,为投资决策提供支持。注意规避动态加载、代理验证及元素定位等潜在陷阱,确保数据抓取高效稳定。
518 17
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
659 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
人工智能 监控 前端开发
基于 Next.js 的书法字体生成工具架构设计与 SSR 优化实践
本项目是一款书法字体生成工具,采用 Next.js 14(App Router)与 Tailwind CSS 构建前端,阿里云 Serverless 部署后端。通过混合渲染策略(SSG/SSR/CSR)、Web Worker 异步计算及 CDN 字体分片加载优化性能。服务端借助阿里云函数计算处理计算密集型任务,将平均耗时从 1200ms 降至 280ms,支持 1000+ QPS。动态路由与 ARMS 监控提升工程化水平,未来计划引入 WebGPU 和 AI 字体风格迁移技术,进一步优化用户体验。
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
1211 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
JavaScript 前端开发 API
纯js轻量级页面顶部Loading进度条插件
纯js轻量级页面顶部Loading进度条插件
|
缓存 自然语言处理 JavaScript
JavaScript中闭包详解+举例,闭包的各种实践场景:高级技巧与实用指南
闭包是JavaScript中不可或缺的部分,它不仅可以增强代码的可维护性,还能在模块化、回调处理等场景中发挥巨大作用。然而,闭包的强大也意味着需要谨慎使用,避免潜在的性能问题和内存泄漏。通过对闭包原理的深入理解以及在实际项目中的灵活应用,你将能够更加高效地编写出简洁且功能强大的代码。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~