美文网首页码农的世界让前端飞前端
JavaScript工作脚本笔记整理

JavaScript工作脚本笔记整理

作者: 560b7bb7b879 | 来源:发表于2018-12-21 20:59 被阅读1次

    整理一篇工作中的JavaScript工作脚本笔记,学而三省吾身。

    (1) 获取Url绝对路径

    function getUrlRelativePath()
        {
            var url = document.location.toString();
            
            var arrUrl = url.split("//");
    
            var start = arrUrl[1].indexOf("/");
            var relUrl = arrUrl[1].substring(start);//stop省略,截取从start开始到结尾的所有字符
    
            if(relUrl.indexOf("?") != -1){
              relUrl = relUrl.split("?")[0];
            }
            return relUrl;
        }
    
    

    (2) 获取Url请求参数

    function GetRequest() {
      var url = location.search; //获取url中"?"符后的字串
      var theRequest = new Object();
      if (url.indexOf("?") != -1) {
        var str = url.substr(1);
        strs = str.split("&");
        for(var i = 0; i < strs.length; i ++) {
          theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
        }
      }
      return theRequest;
    }
    var Request = new Object();
    Request = GetRequest();
    
    

    (3) 获取特定请求参数

    function getQueryString(name) {
      var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
      var r = window.location.search.substr(1).match(reg);
      if (r != null) {
        return unescape(r[2]);
      }
      return null;
    }
    // 这样调用:
    alert(GetQueryString("参数名1"));
    
    

    (4) stringify函数
    将现有的对象转换为JSON字符串, 则可以使用 JSON.stringify(obj)函数

    (5) setTimeOut函数
    javascript延时3秒执行method函数
    setTimeout(function(){ method()},3000);

    (6) js 获取当前年月日时分秒星期

    $("#aa").click(function () {
    var date = new Date();
    this.year = date.getFullYear();
    this.month = date.getMonth() + 1;
    this.date = date.getDate();
    this.day = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六")[date.getDay()];
    this.hour = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
    this.minute = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
    this.second = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
    var currentTime = "现在是:" + this.year + "年" + this.month + "月" + this.date + "日 " + this.hour + ":" + this.minute + ":" + this.second + " " + this.day;
    alert(currentTime);
    });
    
    

    (7) Ajax请求显示加载中提示

    $.ajax({
        type: "post",
        url: loadurl,
        async: true,
        i:Math.random(),
        success:function(data){
            $("#tra_"+id).html(data);
        }
        beforeSend:function(){
            $("#tra_"+id).html('加载中...');
        }
    });
    
    

    (8) 大量if…else…的替换方法

    遇到需要写很多if…else…的情况,或许可以考虑如下的哈希字典匹配的方法,或者用状态模式实现

    例子:

    /* 不用if...else,改成哈希字典匹配的方法 */
                            //if...else...方法
                            /* var itemTypeStr = '';
                            if(rowdata.itemType == '1'){
                                itemTypeStr = '行政许可';
                            }else if(rowdata.itemType == '2'){
                                itemTypeStr = '非行政许可';
                            }else if(rowdata.itemType == '3'){
                                itemTypeStr = '公共服务事项';
                            } */
                            var itemTypeReg = {
                                    '0':'',
                                    '1':'行政许可',
                                    '2':'非行政许可',
                                    '3':'公共服务事项',
                                    '4':'备案',
                                    '5':'其他',
                                    '6':'行政征收',
                                    '7':'行政确认',
                                    '8':'行政年检',
                                    '9':'其他行政权力',
                                    '10':'行政处罚',
                                    '11':'行政强制',
                                    '12':'行政给付',
                                    '13':'行政检查',
                                    '14':'行政奖励',
                                    '15':'行政裁决'
                            }
                            var itemType = rowdata.itemType;
                            //itemType为1~15的数,哈希匹配的方法,例子仅供参考
                            itemType = itemTypeReg[itemType];
                            return itemType;
    
    

    (9) 字符串长度获取(支持中文)

    获取字符串的长度,有时候经常就是str.length直接获取,其实在字符串没有中文的情况是可以的,但是一旦有中文,就会发现这样获取其实是不正确的。因为中文占两个字节

    function getStrRealLen(str) {
        ///<summary>获得字符串实际长度,中文2,英文1</summary>
        ///<param name="str">要获得长度的字符串</param>
        var realLength = 0, len = str.length, charCode = -1;
        for (var i = 0; i < len; i++) {
          charCode = str.charCodeAt(i);
          if (charCode >= 0 && charCode <= 128) realLength += 1;
          else realLength += 2;
        }
        return realLength;
      };
    
    前端进阶者学习交流q-u-n---731771211
    
    
    

    相关文章

      网友评论

        本文标题:JavaScript工作脚本笔记整理

        本文链接:https://www.haomeiwen.com/subject/vdnvkqtx.html