js常见问题

1.滚动加载

    function onScroll() {
        if (this.curPage > this.totalPage) return;
        var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
        var scrollHeight = document.documentElement.scrollHeight || document.body.scrollHeight;
        var windowHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
        if (scrollTop + windowHeight > scrollHeight - 100) {
            // flagData防止触发多次
            if (!this.flagData) return;
            this.flagData = false;
            this.getSingerList();//请求数据成功后 page+1, this.flagData = true;
        }
    }

2.获取特定对象的值,key忽略大小写

let options={
    shareUserId:123,
}
// let shareUserId=options.shareUserid||options.shareUserId||options.shareUserID;

for (let item in options){
    if(item.toLowerCase()=='shareuserid'){
        let shareUserId=options[item];
        console.log(shareUserId);//123
    }
}

3. 获取地址中的参数值

function getUrlParam(name, url) {
  if (!url) url = location.href;
  name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
  var regexS = "[\\?&]" + name + "=([^&#]*)";
  var regex = new RegExp(regexS);
  var results = regex.exec(url);
  return results == null ? null : results[1];
}

4.格式化时间

/**
 * 格式化时间
 * @ date 时间参数,传入字符串
 * @ fmt 时间显示格式,‘yyyy-MM-dd hh:mm:ss’
 */
function formatDate(time, fmt) {
    if(!time) return '';
    var date = new Date(time);
    var o = {
        'y+': date.getFullYear(),
        'M+': date.getMonth() + 1,
        'd+': date.getDate(),
        'h+': date.getHours(),
        'm+': date.getMinutes(),
        's+': date.getSeconds()
    };
    for (var k in o) {
        if (new RegExp('(' + k + ')').test(fmt)) {
            var str = o[k] + '';
            fmt = fmt.replace(RegExp.$1, (str.length === 1) ? ('0' + str) : str);
        }
    };
    return fmt;
}

5.版本号比较

function versionCompare(curV, reqV) {
        var arr1 = curV.split('.');
        var arr2 = reqV.split('.');
        //将两个版本号拆成数字 
        var maxL = Math.max(arr1.length, arr2.length);
        var pos = 0; //当前比较位
        var diff = 0; //当前为位比较是否相等
        //逐个比较如果当前位相等则继续比较下一位
        while (pos < maxL) {
            diff = parseInt(arr1[pos]||0) - parseInt(arr2[pos]||0);
            if (diff != 0) break;
            pos++;
        }
        if (diff >= 0) {
            return true;
        } else {
            return false;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值