JavaScript笔记整理详解编程语言

整理一篇工作中的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 获取当前年月日时分秒星期

来自https://www.cnblogs.com/wdw31210/archive/2012/06/27/2565865.html

$("#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; 
  }; 

#### (10) window.open打开之后关闭刷新实现
有些时候,要打开一个弹窗是用window.open实现,然后我尝试在弹窗页面做关闭窗口的上级页面刷新,发现并没有效果,网上找资料,找到一篇很好的博客 https://blog.csdn.net/wangshanny/article/details/46325537

/** 
  * 监听打开的弹窗,关闭后刷新页面 
  */ 
 function openWin(url,text,winInfo){ 
    var winObj = window.open(url,text,winInfo); 
    var loop = setInterval(function() {      
        if(winObj.closed) {     
            clearInterval(loop);     
            //alert('closed');     
            parent.location.reload();  
        }     
    }, 1);    
 } 
 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/17051.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论