整理一篇工作中的JavaScript脚本笔记,不定时更新,笔记来自网上资料或者自己经验归纳。

(1) 获取Url绝对路径

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

(2) 获取Url请求参数

  1. function GetRequest() {
  2. var url = location.search; //获取url中"?"符后的字串
  3. var theRequest = new Object();
  4. if (url.indexOf("?") != -1) {
  5. var str = url.substr(1);
  6. strs = str.split("&");
  7. for(var i = 0; i < strs.length; i ++) {
  8. theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
  9. }
  10. }
  11. return theRequest;
  12. }
  13. var Request = new Object();
  14. Request = GetRequest();

(3) 获取特定请求参数

  1. function getQueryString(name) {
  2. var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
  3. var r = window.location.search.substr(1).match(reg);
  4. if (r != null) {
  5. return unescape(r[2]);
  6. }
  7. return null;
  8. }
  9. // 这样调用:
  10. 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

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

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

  1. $.ajax({
  2. type: "post",
  3. url: loadurl,
  4. async: true,
  5. i:Math.random(),
  6. success:function(data){
  7. $("#tra_"+id).html(data);
  8. }
  9. beforeSend:function(){
  10. $("#tra_"+id).html('加载中...');
  11. }
  12. });

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

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

例子:

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

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

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


  1. function getStrRealLen(str) {
  2. ///<summary>获得字符串实际长度,中文2,英文1</summary>
  3. ///<param name="str">要获得长度的字符串</param>
  4. var realLength = 0, len = str.length, charCode = -1;
  5. for (var i = 0; i < len; i++) {
  6. charCode = str.charCodeAt(i);
  7. if (charCode >= 0 && charCode <= 128) realLength += 1;
  8. else realLength += 2;
  9. }
  10. return realLength;
  11. };

(10) window.open打开之后关闭刷新实现

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

  1. /**
  2. * 监听打开的弹窗,关闭后刷新页面
  3. */
  4. function openWin(url,text,winInfo){
  5. var winObj = window.open(url,text,winInfo);
  6. var loop = setInterval(function() {
  7. if(winObj.closed) {
  8. clearInterval(loop);
  9. //alert('closed');
  10. parent.location.reload();
  11. }
  12. }, 1);
  13. }

JavaScript笔记整理的更多相关文章

  1. javascript笔记整理(事件)

    一.事件驱动 1.事件javascript侦测到的用户的操作或是页面的一些行为(怎么发生的) 2.事件源引发事件的元素(发生在谁的身上) 3.事件处理程序对事件处理的程序或是函数 (发生了什么事) 二 ...

  2. javascript笔记整理(对象的继承顺序、分类)

    Object.prototype.say=function(){ alert("我是顶层的方法"); } children.prototype=new parent(); pare ...

  3. javascript笔记整理(对象遍历封装继承)

    一.javascript对象遍历 1.javascript属性访问 对象.属性名 对象['属性名'] var obj={name:'chen',red:function(){ alert(1);ret ...

  4. javascript笔记整理(对象基础)

    一.名词解释 1.基于对象(一切皆对象,以对象的概念来编程) 2.面向对象编程(Object Oriented Programming,OOP) A.对象(JavaScript 中的所有事物都是对象) ...

  5. javascript笔记整理(数组)

    数组是一个可以存储一组或是一系列相关数据的容器. 一.为什么要使用数组. a.为了解决大量相关数据的存储和使用的问题. b.模拟真是的世界. 二.如何创建数组 A.通过对象的方式来创建——var a= ...

  6. javascript笔记整理(回调、递归、内置顶层函数)

    1.回调函数(通过函数的指针来调用函数,把一个函数的指针做为另一个函数的参数,当调用这个参数的时候,这个函数就叫做回调函数) a.通过指针来调用 function aa(a,b,fun){ retur ...

  7. javascript笔记整理(变量作用域)

    变量的作用域(作用域:指的就是一段代码的作用范围) 一.变量的作用域 1.全局变量(在代码中任何地方都能够访问得到的变量,拥有全局的作用域) A.最外层函数外面定义的变量 var a=1; funct ...

  8. javascript笔记整理(函数)

    javascript函数的声明和调用将完成某一特定功能的代码集合起来,可以重复使用的代码块. 一.函数的声明方式(创建) A.基本语法(function  关键字)function 函数名([参数1] ...

  9. javascript笔记整理(概述,变量,数据类型)

    A.概述 1.输出工具: document.write()---可以是html alert()---字符串 prompt(text,defaultText) text---可选.要在对话框中显示的纯文 ...

随机推荐

  1. Servlet之过滤器(Filter)

    一.概述 Servlet 过滤器是小型的 Web 组件,它们拦截请求和响应,以便查看.提取或以某种方式操作正在客户机和服务器之间交换的数据.这些组件通过一个配置文件来声明,并动态地处理,当在web.x ...

  2. Debian9安装后的一些配置

    第一步   修改源 su root vi /etc/apt/sources.list #建议先备份,不过系统好像有已经备份好的 加入国内源,保存 apt-get update   #更新源       ...

  3. [树上倍增+二分答案][NOIP2012]运输计划

    题目背景 公元 2044 年,人类进入了宇宙纪元. 题目描述 公元 2044 年,人类进入了宇宙纪元 L 国有 nn 个星球,还有 n-1n−1 条双向航道,每条航道建立在两个星球之间,这 n-1n− ...

  4. ubuntu 18.04配置静态ip,解决无法上网问题,解决resolv.conf配置文件被覆盖

    Netplan 是 Ubuntu 17.10 中引入的一种新的命令行网络配置实用程序,用于在 Ubuntu 系统中轻松管理和配置网络设置. 它允许您使用 YAML 格式的描述文件来抽像化定义网络接口的 ...

  5. docker构建镜像

    Docker 提供了两种构建镜像的方法: docker commit 命令Dockerfile 构建文件 示例: Dockerfile FROM golang:1.7.5 #基础镜像 RUN apt- ...

  6. tensorflow 源码编译

    https://blog.csdn.net/xsfl1234/article/details/67669707 https://blog.csdn.net/guxi123/article/detail ...

  7. 移动端各种滚动场景需求的插件better-scroll

    移动端各种滚动场景需求的插件: 文档地址: better-scroll:https://ustbhuangyi.github.io/better-scroll/doc/zh-hans/#better- ...

  8. 父组件传值给子组件的v-model属性

    父组件如何修改子组件中绑定的v-model属性 因为v-model属性是双向数据绑定,而vue的通信方式又是单向通信,所以,当子组件想要改变父组件传过来的值的属性时,就会报错,典型的就是父组件传值给子 ...

  9. FFMPEG增加和提取字幕流

    转自 https://www.cnblogs.com/satng/p/5514683.html 防抽复制一遍 增加字幕流ffmpeg -i video.avi -i sub.ass -map 0:0 ...

  10. 用chrome模拟微信浏览器访问页面

    有的网页通过限制 user agent  来达到禁止在微信浏览器以外的地方访问,我们通过chrome修改user agent即可破解. CHROME浏览器,进入开发者模式 切换到手机浏览模板 打开 N ...