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);   
 }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章