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;
}

演示结果:
鼠标监听:

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

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

代码演示:

<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>

演示结果:

时间: 2024-10-24 02:25:59

JavaScript---网络编程(9-2)--DHTML技术演示(2-2)-表格加强的相关文章

JavaScript---网络编程(11)--DHTML技术演示(4)-单选框/下拉菜单/添加文件

本节讲述单选框/下拉菜单/添加文件,综合css,html和JavaScript. 单选框: 实现的功能是:(类似平时的性格测试) 先隐藏一部分页面,然后通过点击单选框来显示. 再通过选项的选择-(每个选项有不同的积分)积分的多少来给出评语 演示代码: <html> <head> <title>DHTML技术演示---radio的使用</title> <meta http-equiv="content-Type" content=&q

JavaScript---网络编程(8)-DHTML技术演示(1)

DHTML技术使用的基本思路: 1. 用标签封装数据-html范畴 2. 定义样式-css范畴 3. 明确事件源.事件和要处理的节点-dom范畴 4. 明确具体的操作方式,其实就是事件的处理内容(过程)-js范畴 新闻字体 第一种方式:html范畴 演示代码: <html> <head> <title>>DHTML技术演示---新闻字体1</title> <meta http-equiv="content-type" cont

JavaScript---网络编程(12)--DHTML技术演示(5)-form表单验证技术(正则)

这里不进行很复杂的后台验证以及JavaScript的正则表达式,只是简单的介绍下这个技术,简单的后台接收与跳转,大概了解怎么验证的就可以.具体的技术,我后面还会继续写博客的.本人也还在学习中. 表单验证1-简单验证 进行简单的验证,用户名必须为abcd,密码长度必须大于等于6 然后根据用户输入的数据,在后面给出提示. 代码演示: <html> <head> <title>DHTML技术演示---表单验证</title> <meta http-equiv

JavaScript---网络编程(9-1)--DHTML技术演示(2-1)-表格创建的几种方式

一:用最底层的方式,该方式用来创建别的对象树也可以 代码演示: <html> <head> <title>DHTML技术演示---表格创建--用最底层的方式,其实该方式用来创建别的对象树也可以</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style type="text/css&qu

Java编程那些事儿105——网络编程技术4

13.2.4 UDP编程 网络通讯的方式除了TCP方式以外,还有一种实现的方式就是UDP方式.UDP(User Datagram Protocol),中文意思是用户数据报协议,方式类似于发短信息,是一种物美价廉的通讯方式,使用该种方式无需建立专用的虚拟连接,由于无需建立专用的连接,所以对于服务器的压力要比TCP小很多,所以也是一种常见的网络编程方式.但是使用该种方式最大的不足是传输不可靠,当然也不是说经常丢失,就像大家发短信息一样,理论上存在收不到的可能,这种可能性可能是1%,反正比较小,但是由

软件开发-关于网络编程和web开发的一些问题

问题描述 关于网络编程和web开发的一些问题 1.网络编程和web开发有什么不同?我的理解是网络编程是计算机和服务器之间通讯,web开发是网站?但是一些软件连接到服务器,但是其中需要用浏览器显示某些信息,例如360打开软件管家,其中的信息不用浏览器显示不了,这种算是web应用程序吗?还是算是网络编程?又如玩网游,在开始游戏那里,除了开始游戏那按钮,其他内容是要用浏览器来显示的,然后在游戏中肯定要不断和服务器交换信息,这样又算是什么?能不能解析清楚网络编程和web开发的异同? 2.能不能举些在wi

C#网络编程技术FastSocket实战项目演练

一.FastSocket课程介绍         .NET框架虽然微软提供了socket通信的类库,但是还有很多事情要自己处理,比如TCP协议需要处理分包.组包.粘包.维护连接列表等,UDP协议需要处理丢包.乱序,而且对于多连接并发,还要自己处理多线程等等.本期分享课程阿笨给大家带来的是来源于github开源Socket通信中间件:FastSocket,目的就是把大家从繁琐的网络编程技术中彻底地解放和释放出来.         阿笨只想安安静静的学习下网络编程技术Socket后,将学习的成果直接

C#网络编程技术SuperSocket实战项目演练

一.SuperSocket课程介绍 1.1.本期<C#网络编程技术SuperSocket实战项目演练>课程阿笨给大家带来三个基于SuperSocket通讯组件的实战项目演示实例: ● 基于SuperSocket开发的客户端和服务端聊天应用程序(ABenNET.SuperSocket.AppChat). ● 基于SuperWebSocket开发的客户端和服务端聊天应用程序(ABenNET.SuperWebSocket.AppChat). ● 基于SuperWebSocket开发的网页端和服务端聊

Java编程那些事儿102——网络编程技术1

13.2 网络编程技术 前面介绍了网络编程的相关基础知识,初步建立了网络编程的概念,但是实际学习网络编程还必须使用某种程序设计语言进行代码实现,下面就介绍一下网络编程的代码实现. 13.2.1 网络编程步骤 按照前面的基础知识介绍,无论使用TCP方式还是UDP方式进行网络通讯,网络编程都是由客户端和服务器端组成.当然,B/S结构的编程中只需要实现服务器端即可.所以,下面介绍网络编程的步骤时,均以C/S结构为基础进行介绍. 说明:这里的步骤实现和语言无关,也就是说,这个步骤适用于各种语言实现,不局