整理一篇工作中的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);
}

最新文章

  1. VisualVM通过jstatd方式远程监控远程主机
  2. php 函数汇总
  3. Mysql使用workbench迁移数据
  4. 任务调度开源框架Quartz动态添加、修改和删除定时任务
  5. phpcms--使用添加php原生支持
  6. php curl 提交 总结
  7. AngularJS开发相关配置
  8. C#+ArcEngine 序列化和反序列化AE对象
  9. hdu Game of Connections
  10. Django数据库迁移
  11. Git的fast forward和no fast forward和 three way merge 以及squash(聚合)
  12. HelloPython
  13. java获取当前项目或类路径
  14. 原生JS实现瀑布流布局
  15. 解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)
  16. 配置私有仓库(使用registry镜像搭建一个私有仓库)
  17. 获取随机字符串的方法 GetRandomString
  18. 精心收集整理的SQL Server 2014/2012/2008/2005/2000简体中文企业版下载地址
  19. 5G的7位电话号码,去重,内存20mb,代码实现。
  20. 第六章 mybatis注入映射器

热门文章

  1. 基于IDEA工具 lombok 的使用
  2. vim 中文乱码怎么解决
  3. linux awk使用详解
  4. linux下修改时间戳
  5. 上传文件,经过Zuul,中文文件名乱码
  6. 图解HTTP第六章
  7. 【微信小程序开发之坑】javascript创建date对象
  8. 高速上手C++11 14 笔记2
  9. tensorflow学习之(八)使用dropout解决overfitting(过拟合)问题
  10. python -----一个简单的小程序(监控电脑内存,cpu,硬盘)