JavaScript---网络编程(9-2)--DHTML技术演示(2-2)-表格加强

简介: JavaScript---网络编程(9-2)--DHTML技术演示(2-2)-表格加强

对上篇博客的最后那个表格隔行高亮显示加了个功能,鼠标监听和年龄从小到大排序。

演示代码:

<html>
  <head>
    <title>DHTML技术演示---表格中页面中的显示操纵--行间隔高亮显示</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <style type="text/css">
        @import url(table.css);
        .one{
            background:#00ff00;
        }
        .two{
            background:rgb(210,0,0);
        }
        .over{
            background-color:#ffff00;
        }   
    </style>
    <script type="text/javascript">
        function trColor(){
            var oTableNode = document.getElementById("dataTable");
            var arrTrs = oTableNode.rows;//rows为表格属性,返回所以的行
            for(var x=1;x<arrTrs.length; x++){
                if(x%2==1){
                    arrTrs[x].className="one";
                }else{
                    arrTrs[x].className="two";
                }
                //为每一行动态注册事件处理方法
                var oldClassName;
                arrTrs[x].onmouseover=function(){
                    //监听鼠标-移动到那一行
                    oldClassName=this.className;
                    this.className="over";
                };
                arrTrs[x].onmouseout=function(){
                    //鼠标监听-移开
                    this.className=oldClassName;
                };
            }
        }
        //onload = trColor();//这种方式赋值就是执行(本例中,这一句没有效果,因为table对象还没出来。
        //但如果把该段代码放在<table>之后则有效果),而且只能执行这一个方法
        onload=function(){
            trColor();
            //还可以在这里写其它代码,甚至调用其它函数
        };
        //这种方式只是给onload事件注册响应函数,解析该句代码时函数并没有执行
        //而是在该事件发生时才会调用。并且可以在function()中调用多个函数.
    </script>
    <script type="text/javascript">
        function sortTable(){
            var oTableNode = document.getElementById("dataTable");
            var arrTrs = oTableNode.rows;
            //思路:用一个新的容器来存放表格的行对象数组,并在新数组中进行排序,把排序后的每个元素(行对象)依次添加到表格对象中
            //放到新容器arrTrs2中
            var arrTrs2 = [];
            for (var x = 1; x < arrTrs.length; x++) {
                arrTrs2[x - 1] = arrTrs[x];
            }
            //arrTrs2数组可以看成arrTrs数组的引用
            //对容器arrTrs2中的元素进行排序    
            mySort(arrTrs2);
            //把排序后的行对象重新加到表格中
            for (var x = 0; x < arrTrs2.length; x++) {
                //arrTrs2[x].parentNode.nodeName//TBODY
                arrTrs2[x].parentNode.appendChild(arrTrs2[x]);
                //arrTrs2数组可以看成arrTrs数组的引用
            }
        }
        function mySort(arr){
            for(var x=0;x<arr.length-1;x++){
                for(var y=x+1;y<arr.length;y++){
                    if(parseInt(arr[x].cells[1].innerText) > parseInt(arr[y].cells[1].innerText)){
                        var temp = arr[x];
                        arr[x] = arr[y];
                        arr[y] = temp;
                    }
                }
            }
        }
    </script>
  </head>
  <body>
        <table id="dataTable">
            <tr>
                <th>姓名</th> <th><a href="javascript:void(0)" onclick="sortTable()">年龄</a></th> <th>地址</th>
            </tr>
            <tr>
                <td>张三</td> <td>23</td> <td>湖南长沙</td>
            </tr>
            <tr>
            <td>李四</td> <td>24</td> <td>湖南长沙</td>
            </tr>
            <tr>
                <td>王五</td> <td>53</td> <td>湖南长沙</td>
            </tr>
            <tr>
                <td>Jack</td> <td>65</td> <td>湖南长沙</td>
            </tr>
            <tr>
                <td>Rose</td> <td>13</td> <td>湖南长沙</td>
            </tr>
            <tr>
                <td>Jack</td> <td>8</td> <td>湖南长沙</td>
            </tr>
            <tr>
                <td>Rose</td> <td>73</td> <td>湖南长沙</td>
            </tr>
            <tr>
                <td>Jack</td> <td>29</td> <td>湖南长沙</td>
            </tr>
            <tr>
                <td>Rose</td> <td>20</td> <td>湖南长沙</td>
            </tr>
        </table>
  </body>
</html>


table.css:

table {
    border:#ff80ff 1px solid;
    /*solid  :  实线边框 */
    width:800px;
    border-collapse:collapse;
    /*separate  :  默认值。边框独立(标准HTML) 
    collapse  :  相邻边被合并 
    */  
}
table td{/*table 下面的td*/
    border:#0000ff 1px solid;
    padding:5px;/*内补丁*/
}
table th{
    border:#ff80ff 1px solid;
    padding:5px;
    background-color:#c0c0c0;
}

演示结果:

鼠标监听:

image.png

点一下年龄:实现表格按年龄从小到大排序

image.png

现在我们觉得上面的不好,只能从小到大排序,而且排序后颜色也变了。不好看,现在我们来对它进行改进。

代码演示:

<html>
  <head>
    <title>DHTML技术演示---表格中页面中的显示操纵--行间隔高亮显示</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <style type="text/css">
        @import url(table.css);
        .one{
            background:#00ff00;
        }
        .two{
            background:rgb(210,0,0);
        }
        .over{
            background-color:#ffff00;
        }   
        a{
            text-decoration:none;/*装饰-去掉下划线*/
        }
    </style>
    <script type="text/javascript">
        function trColor(){
            var oTableNode = document.getElementById("dataTable");
            var arrTrs = oTableNode.rows;//rows为表格属性,返回所以的行
            for(var x=1;x<arrTrs.length; x++){
                if(x%2==1){
                    arrTrs[x].className="one";
                }else{
                    arrTrs[x].className="two";
                }
                //为每一行动态注册事件处理方法
                var oldClassName;
                arrTrs[x].onmouseover=function(){
                    //监听鼠标-移动到那一行
                    oldClassName=this.className;
                    this.className="over";
                };
                arrTrs[x].onmouseout=function(){
                    //鼠标监听-移开
                    this.className=oldClassName;
                };
            }
        }
        //onload = trColor();//这种方式赋值就是执行(本例中,这一句没有效果,因为table对象还没出来。
        //但如果把该段代码放在<table>之后则有效果),而且只能执行这一个方法
        onload=function(){
            trColor();
            //还可以在这里写其它代码,甚至调用其它函数
        };
        //这种方式只是给onload事件注册响应函数,解析该句代码时函数并没有执行
        //而是在该事件发生时才会调用。并且可以在function()中调用多个函数.
    </script>
    <script type="text/javascript">
        var flag=true;
        function sortTable(aNode){
            var oTableNode = document.getElementById("dataTable");
            var arrTrs = oTableNode.rows;
            //思路:用一个新的容器来存放表格的行对象数组,并在新数组中进行排序,把排序后的每个元素(行对象)依次添加到表格对象中
            //放到新容器arrTrs2中
            var arrTrs2 = [];
            for (var x = 1; x < arrTrs.length; x++) {
                arrTrs2[x - 1] = arrTrs[x];
            }
            //arrTrs2数组可以看成arrTrs数组的引用
            //对容器arrTrs2中的元素进行排序    
            mySort(arrTrs2);
            //把排序后的行对象重新加到表格中
            if(flag){
                for (var x = 0; x < arrTrs2.length; x++) {
                    //arrTrs2[x].parentNode.nodeName//TBODY
                    arrTrs2[x].parentNode.appendChild(arrTrs2[x]);
                    //arrTrs2数组可以看成arrTrs数组的引用
                }
                aNode.innerHTML="年龄↑";
            }else{
                for(var x=arrTrs2.length-1;x>=0;x--){
                    arrTrs2[x].parentNode.appendChild(arrTrs2[x]);
                }
                aNode.innerHTML="年龄↓";
            }
            flag = !flag;
            trColor();
        }
        function mySort(arr){
            for(var x=0;x<arr.length-1;x++){
                for(var y=x+1;y<arr.length;y++){
                    if(parseInt(arr[x].cells[1].innerText) > parseInt(arr[y].cells[1].innerText)){
                        var temp = arr[x];
                        arr[x] = arr[y];
                        arr[y] = temp;
                    }
                }
            }
        }
    </script>
  </head>
  <body>
        <table id="dataTable">
            <tr>
                <th>姓名</th> <th><a href="javascript:void(0)" onclick="sortTable(this)">年龄</a></th> <th>地址</th>
            </tr>
            <tr>
                <td>张三</td> <td>23</td> <td>湖南长沙</td>
            </tr>
            <tr>
            <td>李四</td> <td>24</td> <td>湖南长沙</td>
            </tr>
            <tr>
                <td>王五</td> <td>53</td> <td>湖南长沙</td>
            </tr>
            <tr>
                <td>Jack</td> <td>65</td> <td>湖南长沙</td>
            </tr>
            <tr>
                <td>Rose</td> <td>13</td> <td>湖南长沙</td>
            </tr>
            <tr>
                <td>Jack</td> <td>8</td> <td>湖南长沙</td>
            </tr>
            <tr>
                <td>Rose</td> <td>73</td> <td>湖南长沙</td>
            </tr>
            <tr>
                <td>Jack</td> <td>29</td> <td>湖南长沙</td>
            </tr>
            <tr>
                <td>Rose</td> <td>20</td> <td>湖南长沙</td>
            </tr>
        </table>
  </body>
</html>


演示结果:

image.png

image.png

image.png

目录
相关文章
|
7天前
|
Web App开发 JavaScript 前端开发
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
26 1
|
13天前
|
存储 安全 网络安全
云计算与网络安全:技术融合的双刃剑
【10月更文挑战第40天】本文将深入探讨云计算与网络安全之间的关系,揭示它们如何相互依赖又互相挑战。我们将从云计算的基本概念出发,逐步引入网络安全的重要性,并分析云服务在提供便利的同时可能带来的安全隐患。文章还将讨论信息安全的关键领域,如加密技术和身份验证机制,以及如何在云计算环境中加强这些安全措施。通过本文,读者将获得对云计算和网络安全复杂关系的深刻理解,并认识到在享受技术便利的同时,维护网络安全的重要性。
|
9天前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
21 5
|
10天前
|
监控 安全 网络安全
云计算与网络安全:探索云服务中的信息安全技术
【10月更文挑战第43天】本文将深入探讨云计算与网络安全的交汇点,重点分析云服务中的信息安全技术和策略。我们将从云计算的基础架构出发,逐步剖析网络安全的重要性,并介绍如何通过实施有效的安全措施来保护数据和应用程序。文章还将提供实用的代码示例,帮助读者更好地理解和应用这些安全技术。
26 4
|
13天前
|
存储 安全 网络安全
云计算与网络安全:云服务、网络安全、信息安全等技术领域
【10月更文挑战第40天】随着互联网技术的不断发展,云计算已经成为了现代社会中不可或缺的一部分。然而,云计算的普及也带来了一系列的安全问题。本文将探讨云计算与网络安全之间的关系,包括云服务、网络安全、信息安全等领域。我们将通过代码示例来展示如何保护云计算环境中的敏感信息和数据。最后,我们将总结云计算与网络安全之间的紧密联系,并展望未来的发展趋势。
|
14天前
|
云安全 安全 网络安全
云计算与网络安全:技术挑战与解决策略
【10月更文挑战第39天】随着云计算技术的飞速发展,网络安全问题也日益凸显。本文将探讨云计算环境下的网络安全挑战,并提出相应的解决策略。通过分析云服务模型、网络安全威胁以及信息安全技术的应用,我们将揭示如何构建一个安全的云计算环境。
|
14天前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
47 2
|
15天前
|
云安全 安全 网络安全
云计算与网络安全:技术融合的未来之路
【10月更文挑战第38天】 在数字化浪潮中,云计算和网络安全成为支撑现代企业和个人数据安全的两大基石。本文将深入探讨云计算服务如何与网络安全技术相结合,保障信息安全,并分析面临的挑战及未来发展趋势。我们将通过实际案例,揭示云安全的最佳实践,为读者提供一条清晰的技术融合路径。
|
16天前
|
安全 网络安全 数据库
云计算与网络安全:技术融合的未来之路
【10月更文挑战第37天】本文将探讨云计算与网络安全的交汇点,揭示它们如何共同塑造信息安全的未来。我们将深入了解云服务的核心组件、网络安全的关键策略以及两者如何相互增强。通过分析当前的挑战和未来的趋势,本文旨在为读者提供一条清晰的路径,以理解并应对这一不断发展的技术领域。
|
15天前
|
存储 安全 网络安全
云计算与网络安全:探索云服务、网络安全和信息安全的技术领域
【10月更文挑战第38天】本文将深入探讨云计算与网络安全之间的关系,包括云服务、网络安全和信息安全等技术领域。我们将通过实例分析,了解如何保护云计算环境中的数据和应用程序,以及如何应对网络安全威胁。同时,我们还将讨论一些常见的网络安全攻击类型,并提出相应的防御策略。最后,我们将介绍一些实用的工具和技术,以帮助您更好地保护您的云计算环境。