JavaScript實用筆記小結
整理一篇工作中的JavaScript指令碼筆記,不定時更新,筆記來自網上資料或者自己經驗歸納。
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);
}
---------------------
作者:smileNicky
來源:CSDN
原文:https://blog.csdn.net/u014427391/article/details/84980219
版權宣告:本文為博主原創文章,轉載請附上博文連結!