zoukankan      html  css  js  c++  java
  • 万恶的成绩排名

      考完试本来成绩就差,还得排名次,还得按单科排。。。不知道这样很伤自尊么,从小到大提起来这个就有心理阴影。。

      吐槽完了,我们来看这个小作业吧。。。囧。。。

      先上图,,类似这样的一个表格,我们需要做到的是,单击某一科的表头,按照该科所有同学成绩降序排列,并根据成绩给出同学的排名。

      

      看起来应该不难(谁说的?~~),按道理将应该用<table>标签来绘制这个表格,好吧,我是野路子。竟然用了4个<dl>来做这个作业。我是坑货我承认,那么我们先来实现这个效果。

      说一下实现方法的一些关键点吧。

        第一时间想到的是用sort();方法将已经存入Array[]的英语成绩进行排序,那么很简单。这个方法会轻松地升序排列出成绩,然后用reverse()方法改为降序就OK了。那么问题来了(二货们自行脑补~~~):怎么样才能让姓名也跟着这个数组进行排序呢?利用sort();方法想了半天也没相通(才疏学浅)。那么我就想到了自己写排序的方法。

        例:Array1 = 英语成绩;

          Array2 = 姓名;

          for(i=0;i<Array1.length;i++){

            for(j=i+1;j<Array1.length+1;j++){

               var tmp;

               if(Array1[i]<Array1[j]){

                 tmp = Array1[i];

                 Array1[i] = Array1[j];

                 Array1[j] = tmp;

                 tmp = Array2[i];

                 Array2[i] = Array2[j];

                 Array2[j] = tmp;

               }

            }

          }

      通过这个排序函数对Array1(英语成绩)进行排序的同时,每一步排序动作会同时对Array2(姓名)进行相同的操作。如此以来,问题解决。

      附上源代码。

      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8">
      5     <title>Document</title>
      6     <style>
      7         *{    margin: 0;
      8             padding: 0;
      9         }
     10         dt,dd{
     11             width: 100px;
     12             height: 30px;
     13             border: 1px solid #C0C0C0;
     14             font-size: 15px;
     15             line-height: 30px;
     16             text-align: center;
     17             vertical-align: center;
     18         }
     19         div{
     20             overflow: hidden;
     21         }
     22         dl{
     23             float: left;
     24         }
     25     </style>
     26 </head>
     27 <body>
     28     <div>
     29         <dl id="name">
     30             <dt id="name">姓名
     31                 <dd>大毛</dd>
     32                 <dd>二毛</dd>
     33                 <dd>三毛</dd>
     34                 <dd>小明</dd>
     35                 <dd>小红</dd>
     36                 <dd>小兰</dd>
     37                 <dd>张三</dd>
     38                 <dd>李四</dd>
     39                 <dd>王五</dd>
     40                 <dd>赵六</dd>
     41             </dt>
     42         </dl>
     43         <dl id="en">
     44             <dt id="btnen">英语
     45                 <dd>37</dd>
     46                 <dd>73</dd>
     47                 <dd>56</dd>
     48                 <dd>62</dd>
     49                 <dd>81</dd>
     50                 <dd>53</dd>
     51                 <dd>69</dd>
     52                 <dd>88.5</dd>
     53                 <dd>63</dd>
     54                 <dd>74</dd>
     55             </dt>
     56         </dl>
     57         <dl id="ma">
     58             <dt id="btnma">数学
     59                 <dd>53</dd>
     60                 <dd>81</dd>
     61                 <dd>73.5</dd>
     62                 <dd>66.5</dd>
     63                 <dd>90</dd>
     64                 <dd>54</dd>
     65                 <dd>68</dd>
     66                 <dd>43</dd>
     67                 <dd>65.5</dd>
     68                 <dd>83</dd>
     69             </dt>
     70         </dl>
     71         <dl id="lu">
     72             <dt id="btnlu">语文
     73                 <dd>71</dd>
     74                 <dd>49</dd>
     75                 <dd>53.5</dd>
     76                 <dd>60.5</dd>
     77                 <dd>81</dd>
     78                 <dd>80</dd>
     79                 <dd>67</dd>
     80                 <dd>69</dd>
     81                 <dd>57</dd>
     82                 <dd>89</dd>
     83             </dt>
     84         </dl>
     85     </div>
     86 </body>
     87     <script>
     88         var odten = document.getElementById("btnen");
     89         var odtma = document.getElementById("btnma");
     90         var odtlu = document.getElementById("btnlu");
     91         var oddens = document.getElementById("en").getElementsByTagName("dd");
     92         var oddnms = document.getElementById("name").getElementsByTagName("dd");
     93         var oddmas = document.getElementById("ma").getElementsByTagName("dd");
     94         var oddlus = document.getElementById("lu").getElementsByTagName("dd");
     95         var arren = new Array();
     96         var arrma = new Array();
     97         var arrlu = new Array();
     98         var arrnme = new Array();
     99         var arrnmm = new Array();
    100         var arrnml = new Array();
    101         for(var i=0;i<oddens.length;i++){
    102             arren[i] = oddens[i].innerHTML;
    103             arrma[i] = oddmas[i].innerHTML;
    104             arrlu[i] = oddlus[i].innerHTML;
    105             arrnme[i] = oddnms[i].innerHTML;
    106             arrnmm[i] = oddnms[i].innerHTML;
    107             arrnml[i] = oddnms[i].innerHTML;
    108         }
    109         odten.onclick = sorten;
    110         odtma.onclick = sortma;
    111         odtlu.onclick = sortlu;
    112         function sorten(){
    113             odten.style.background = "red";
    114             odtma.style.background = "";
    115             odtlu.style.background = "";
    116             for(var i=0;i<oddens.length;i++){
    117                 for(var j=i+1;j<oddens.length+1;j++){
    118                     var tmp;
    119                     if(arren[i]<arren[j]){
    120                         tmp = arren[i];
    121                         arren[i] = arren[j];
    122                         arren[j] = tmp;
    123                         tmp = arrnme[i];
    124                         arrnme[i] = arrnme[j];
    125                         arrnme[j] = tmp;
    126                     }
    127                 }
    128             }
    129             for(var i=0;i<oddens.length;i++){
    130                 oddens[i].innerHTML = arren[i];
    131                 oddnms[i].innerHTML = arrnme[i];
    132             }
    133         }        
    134         function sortma(){
    135             odtma.style.background = "red";
    136             odten.style.background = "";
    137             odtlu.style.background = "";
    138             for(var i=0;i<oddmas.length;i++){
    139                 for(var j=i+1;j<oddmas.length+1;j++){
    140                     var tmp;
    141                     if(arrma[i]<arrma[j]){
    142                         tmp = arrma[i];
    143                         arrma[i] = arrma[j];
    144                         arrma[j] = tmp;
    145                         tmp = arrnmm[i];
    146                         arrnmm[i] = arrnmm[j];
    147                         arrnmm[j] = tmp;
    148                     }
    149                 }
    150             }
    151             for(var i=0;i<oddens.length;i++){
    152                 oddmas[i].innerHTML = arrma[i];
    153                 oddnms[i].innerHTML = arrnmm[i];
    154             }
    155         }        
    156         function sortlu(){
    157             odtlu.style.background = "red";
    158             odten.style.background = "";
    159             odtma.style.background = "";
    160             for(var i=0;i<oddlus.length;i++){
    161                 for(var j=i+1;j<oddlus.length+1;j++){
    162                     var tmp;
    163                     if(arrlu[i]<arrlu[j]){
    164                         tmp = arrlu[i];
    165                         arrlu[i] = arrlu[j];
    166                         arrlu[j] = tmp;
    167                         tmp = arrnml[i];
    168                         arrnml[i] = arrnml[j];
    169                         arrnml[j] = tmp;
    170                     }
    171                 }
    172             }
    173             for(var i=0;i<oddens.length;i++){
    174                 oddlus[i].innerHTML = arrlu[i];
    175                 oddnms[i].innerHTML = arrnml[i];
    176             }
    177         }        
    178     </script>
    179 </html>
    源代码
  • 相关阅读:
    全局临时表的应用 Timothy
    结合windows服务的Socket聊天室 Timothy
    阿拉伯数字转换成金额大写金额(包括小数) Timothy
    回文字符串和栈 Timothy
    SQL 读取不连续的第30到40之间的数据 Timothy
    C#中as和is关键字 Timothy
    嵌套事务和事务保存点的错误处理 Timothy
    隐式事务 Timothy
    float,double和decimal类型 Timothy
    string 值类型还是引用类型 Timothy
  • 原文地址:https://www.cnblogs.com/pnyh5/p/4103637.html
Copyright © 2011-2022 走看看