一个即时排名的demo

功能:根据输入框输入的内容,实时进行排名,允许有并列排名。
实现方法:两层循环,外层是数组本身,内层是去重的数组。使得每一项都与去重的子数组进行一一比较,从而得出每一项的排名。
细节:验证

<!DOCTYPE html >
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
    table{border:0 none;border-spacing: 0;text-align:center;height:30px;line-height: 30px;border-left: 1px solid #CCC;margin:30px auto;text-align: center;}
    thead tr{background-color: #CCC;}
    tbody td{border-right:1px solid #CCC;padding:5px 20px;border-bottom: 1px solid #CCC;}
    tbody input{width:30px;font-size:14px;float:right;margin-right: 5px;}
    tbody label{width:30px;font-size:14px;float:left;margin-left: 5px;}

}
</style>
<script type="text/javascript" src="js/jquery.js"></script>

<title>排名</title>
</head>

<body>
<table>
    <thead><tr><td>顺位</td><td>总分</td></tr></thead>
    <tbody>
        <tr>
            <td>
                <span class="row">5</span>
            </td>
            <td>
                <label class="total">115</label> + <input type="text" class="pscore" maxlength="2" />
            </td>
        </tr>
        <tr>
            <td>
                <span class="row">8</span>
            </td>
            <td>
                <label class="total">112</label> + <input type="text" class="pscore" maxlength="2" />
            </td>
        </tr>
        <tr>
            <td>
                <span class="row">6</span>
            </td>
            <td>
                <label class="total">110</label> + <input type="text" class="pscore" maxlength="2" />
            </td>
        </tr>
        <tr>
            <td>
                <span class="row">5</span>
            </td>
            <td>
                <label class="total">100</label> + <input type="text" class="pscore" maxlength="2" />
            </td>
        </tr>
        <tr>
            <td>
                <span class="row">0</span>
            </td>
            <td>
                <label class="total">89</label> + <input type="text" class="pscore" maxlength="2" />
            </td>
        </tr>
    </tbody>

</table>
<script type="text/javascript">
    $(function(){
        $('input').keyup(function(){
            var scores=[];
            var inputNumbers=$(this).val();
            var regInputNum;
            if(inputNumbers.length==1){regInputNum=/^[0-9]$/;}
            else{regInputNum=/([0-1]{1}\d{1})|20/;}
            if(regInputNum.test(inputNumbers)||$(this).val()==''){ 
                $('.pscore').each(function(index,domElm){
                    var inputScore=$(this).val()==''?0:parseInt($(this).val().replace(/\s/g,''))
                    var sysScore=parseInt($(this).prev().text());
                    var totalScore=inputScore+sysScore;
                    scores.push(totalScore);
                })
                var gradeg=fnsort(scores);
                $('.row').each(function(index,elm){
                    $(this).text(gradeg[index]);
                })
            }
            else {
                alert("必须是20以内的数字")
                $(this).val('');
            }
        })

    })
    function fnsort(obj){
        var grades=[]
        var result=simplify(obj);
        var len =obj.length;
        for(var i=0;i<len;i++){
            var grade=-1;
            for(var j=0;j<result.length;j++){
                if(obj[i]<result[j]){                                               
                    grade--;
                }
            }
            grades.push(Math.abs(grade));
        }
        return grades;
    }
    function simplify(arr) {
        var result = [], hash = {};
        for (var i = 0, elems; (elems = arr[i]) != null; i++) {
            if (!hash[elems]) {
                result.push(elems);
                hash[elems] = true;
            }
        }
        return result;
    }

</script>
</body>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值