资讯专栏INFORMATION COLUMN

js常见问题

ThinkSNS / 530人阅读

摘要:滚动加载防止触发多次请求数据成功后获取特定对象的值,忽略大小写获取地址中的参数值格式化时间格式化时间时间参数,传入字符串时间显示格式,版本号比较将两个版本号拆成数字当前比较位当前为位比较是否相等逐个比较如果当前位相等则继续比较下一位

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/101610.html

相关文章

  • Node.js 如何找出循环依赖的文件?如何解决循环依赖问题

    摘要:本文重点是讲解如何解决循环依赖这个问题。如何找到循环依赖的的文件上文的示例代码很简单,个文件,很容易找出循环依赖。如果有十几个文件,手工去找循环依赖的文件,也是非常麻烦的。 本文重点是讲解如何解决循环依赖这个问题。关心这个问题是如何产生的,可以自行谷歌。 如何重现这个问题 // a.js const {sayB} = require(./b.js) sayB() function ...

    Panda 评论0 收藏0
  • 精读《现代 js 框架存在的根本原因》

    摘要:官方规范估计很难出现现代框架的设计了,因为官方设计中前端三剑客是相互分离的方案,为了解决现阶段前端框架的问题,必须由完全接管,这几乎就是,或者支持语法的,可这与最初网页设计思路是违背的。现代前端框架正在告诉我们新的三剑客虚拟虚拟。 1 引言 深入思考为何前端需要框架,以及 web components 是否可以代替前端框架? 原文地址,建议先阅读原文,或者阅读概述。 2 概述 现在前端...

    coordinate35 评论0 收藏0
  • hexo+css遇到的unexpected token问题

    摘要:问题背景使用模拟实现文档,页面和的语法差异遇到问题。文档中的效果如下分析问题报错信息写的很明确,,是不被期望的。遇到问题时,解决思路可以考虑下转义码标签。 问题背景 使用hexo+css模拟实现weex文档,页面Weex 和 Vue 2.x 的语法差异遇到问题。 问题描述 新建页面,copy进去内容,hexo server运行,控制台报错: FATAL Somethings wrong...

    haoguo 评论0 收藏0
  • 工作中常见问题汇总及解决方案

    摘要:注本文是我在开发过程中遇到问题及解决方法的总结,之后会持续更新,希望帮助到更多的学习者。文中有不妥的地方希望指出共同学习,同时欢迎一起补充。 注:本文是我在开发过程中遇到问题及解决方法的总结,之后会持续更新,希望帮助到更多的学习者。文中有不妥的地方希望指出共同学习,同时欢迎一起补充。 npm篇 npm安装依赖报错:permission denied,错误信息大致如下: npm ERR!...

    ddongjian0000 评论0 收藏0
  • Node.js 入门你需要知道的 10 个问题

    摘要:什么是在中什么时候需要是中的包管理器。允许我们为安装各种模块,这个包管理器为我们提供了安装删除等其它命令来管理模块。 showImg(https://user-gold-cdn.xitu.io/2019/7/11/16bde5b2df52a924?w=4000&h=2667&f=jpeg&s=450648); 本文为您分享「Node.js 入门你需要知道的 10 个问题」这些问题可能也...

    szysky 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<