牛客前端大挑战62-73

62.表格排序

描述

系统会在tbody中随机生成一份产品信息表单,如html所示。
请完成 sort 函数,根据参数的要求对表单所有行进行重新排序。
1、type为id、price或者sales,分别对应第1 ~ 3列
2、order为asc或者desc,asc表示升序,desc为降序
3、例如 sort(‘price’, ‘asc’) 表示按照price列从低到高排序
4、所有表格内容均为数字,每一列数字均不会重复
5、不要使用第三方插件

function sort(type, order) {
   
    var index=0
    if(type==='id') index=0
    else if(type==='price') index=1
    else if(type==='sales') index=2
    //获取父元素,每行的元素
    var jsList = document.getElementById("jsList");
    var trs = jsList.getElementsByTagName('tr');
     // slice浅拷贝,返回一个新数组
    var arrTrs = Array.prototype.slice.apply(trs)
    //排序数组
    arrTrs.sort(function(val1,val2){
   
        var td1 = val1.getElementsByTagName('td')[index].innerHTML;
        var td2 = val2.getElementsByTagName('td')[index].innerHTML;
        //升序排序
        if(order == "asc"){
   
            return td1-td2;
        }
        //降序排序
        if(order == "desc"){
   
            return td2-td1;
        }
    });
    //添加元素
    for(var i=0; i<arrTrs.length; i++){
   
        jsList.appendChild(arrTrs[i]);
    }
}

63.替换链接

描述

页面中存在id=jsContainer的DOM元素。
该DOM元素内会给出一段随机文本,可能包含一些链接,比如https://www.baidu.com,或者 www.baidu.com?from=onlineExam,如果出现链接文本,请给该链接文本加上链接标签,用户点击后能直接在新窗口中打开该链接。
请完成 link 函数,完成该功能
1、container只有纯文本内容,不包含其他dom元素
2、识别所有以http://、https://或者www.开始的链接
3、所有www.开头的链接,默认使用 http 协议
4、所有链接在新窗口打开

function link() {
   
    var t=document.getElementById('jsContainer')
    var reg=/(https?:\/\/)?(www\.\w+(\.(com|cn))*([?]\w+=\w*(&\w+=\w*)*)?(#\w+)?)/g
    var textArr=[]
    textArr=t.innerHTML.match(reg)?Array.from(t.innerHTML.match(reg)):[]
    textArr.forEach(item=>{
   
        if(item.indexOf('www.')===0){
   
            t.innerHTML=t.innerHTML.replace(item,`<a href="http://${
     item}" target="_blank">${
     item}</a>`)
        }
        else{
   
            t.innerHTML=t.innerHTML.replace(item,`<a href="${
     item}"  target="_blank">${
     item}</a>`)
        }
    })
}

64.倒计时

描述

倒计时是web开发中常见的组件,请完成second和render两个函数,完成倒计时的显示部分
1、second函数的输入为整数,返回{day: Int, hour: Int, min: Int, second: Int}
2、render函数的输入为second函数的输出,将数据在页面对应的DOM元素上显示出来,格式如html所示
3、如果day为0,隐藏对应的DOM元素,否则显示(请直接使用已经实现的css代码)
4、数值不足两位,前面补充0

function second(second) {
   
    let sec=1
    let minute=60*sec
    let hour=60*minute
    let day=24*hour
    let obj={
   
        day:parseInt(second/day),
        hour:parseInt(second%day/hour),
        min:parseInt(second%hour/minute),
        second:second%minute
    }
    return obj
}

function render(data) {
   
    function len2(d){
   
        d='00'+d //此时d 001:000:001
        return d[d.length-2]+d[d.length-1]
    }
    let ids=document.querySelector('#jsCountdown')
    let html=`
        <span class="${
     data.day == 0 ? 'hide':''}">${
     len2(data.day)}天</span>
        <span>${
     len2(data.hour)}:</span>
        <span>${
     len2(data.min)}:</span>
        <span>${
     len2(data.second)}</span>
    `
    ids.innerHTML=html
}

66.双色球机选一注

描述

双色球由33个红球和16个蓝球组成,1注双色球包括6个不重复的红球和1个蓝球。
请阅读给出的页面和代码,完成 randomFn 函数,实现“随机一注”功能,要求如下:
函数返回:
1.以字符串形式输出“随机一注”结果,选中的红蓝球用"|“隔开,红球在前,号码间用半角逗号隔开,如"06,10,13,18,23,27|05”
2.红球和蓝球号码排列顺序 需与页面展示的顺序对应
页面交互:
1.将选中的红球和蓝球(页面中对应DOM元素)用class="active"高亮
2.将选中的球按号码从小到大排列,移至所属组的前方,结果如示意图所示
3.每次执行 randomFn 函数,输出符合要求且不完全重复

randomFn();
function randomFn() {
   
    return selectBall('red', 6) + '|' + selectBall('blue', 1);
}
function selectBall(color, n) {
   
    var wrap = document.
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值