不得不分享的JavaScript常用方法函数集(上)


Posted in Javascript onDecember 23, 2015

本文中,收集了一些比较常用的Javascript函数,希望对学习JS的朋友们有所帮助。
1. 字符串长度截取

function cutstr(str, len) {
  var temp,
    icount = 0,
    patrn = /[^\x00-\xff]/,
    strre = "";
  for (var i = 0; i < str.length; i++) {
    if (icount < len - 1) {
      temp = str.substr(i, 1);
        if (patrn.exec(temp) == null) {
          icount = icount + 1
      } else {
        icount = icount + 2
      }
      strre += temp
      } else {
      break;
    }
  }
  return strre + "..."
}

2. 替换全部

String.prototype.replaceAll = function(s1, s2) {
  return this.replace(new RegExp(s1, "gm"), s2)
}

3. 清除空格

String.prototype.trim = function() {
  var reExtraSpace = /^\s*(.*?)\s+$/;
  return this.replace(reExtraSpace, "$1")
}

4. 清除左空格/右空格

function ltrim(s){ return s.replace( /^(\s*| *)/, ""); } 
function rtrim(s){ return s.replace( /(\s*| *)$/, ""); }

5. 判断是否以某个字符串开头

String.prototype.startWith = function (s) {
  return this.indexOf(s) == 0
}

6. 判断是否以某个字符串结束

String.prototype.endWith = function (s) {
  var d = this.length - s.length;
  return (d >= 0 && this.lastIndexOf(s) == d)
}

7. 转义html标签

function HtmlEncode(text) {
  return text.replace(/&/g, '&').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>')
}

8. 时间日期格式转换

Date.prototype.Format = function(formatStr) {
  var str = formatStr;
  var Week = ['日', '一', '二', '三', '四', '五', '六'];
  str = str.replace(/yyyy|YYYY/, this.getFullYear());
  str = str.replace(/yy|YY/, (this.getYear() % 100) > 9 ? (this.getYear() % 100).toString() : '0' + (this.getYear() % 100));
  str = str.replace(/MM/, (this.getMonth() + 1) > 9 ? (this.getMonth() + 1).toString() : '0' + (this.getMonth() + 1));
  str = str.replace(/M/g, (this.getMonth() + 1));
  str = str.replace(/w|W/g, Week[this.getDay()]);
  str = str.replace(/dd|DD/, this.getDate() > 9 ? this.getDate().toString() : '0' + this.getDate());
  str = str.replace(/d|D/g, this.getDate());
  str = str.replace(/hh|HH/, this.getHours() > 9 ? this.getHours().toString() : '0' + this.getHours());
  str = str.replace(/h|H/g, this.getHours());
  str = str.replace(/mm/, this.getMinutes() > 9 ? this.getMinutes().toString() : '0' + this.getMinutes());
  str = str.replace(/m/g, this.getMinutes());
  str = str.replace(/ss|SS/, this.getSeconds() > 9 ? this.getSeconds().toString() : '0' + this.getSeconds());
  str = str.replace(/s|S/g, this.getSeconds());
  return str
}

9. 判断是否为数字类型

function isDigit(value) {
  var patrn = /^[0-9]*$/;
  if (patrn.exec(value) == null || value == "") {
    return false
  } else {
    return true
  }
}

10. 设置cookie值

function setCookie(name, value, Hours) {
  var d = new Date();
  var offset = 8;
  var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
  var nd = utc + (3600000 * offset);
  var exp = new Date(nd);
  exp.setTime(exp.getTime() + Hours * 60 * 60 * 1000);
  document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString() + ";domain=360doc.com;"
}

11. 获取cookie值

function getCookie(name) {
  var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
  if (arr != null) return unescape(arr[2]);
  return null
}

12. 加入收藏夹

function AddFavorite(sURL, sTitle) {
  try {
    window.external.addFavorite(sURL, sTitle)
  } catch(e) {
    try {
      window.sidebar.addPanel(sTitle, sURL, "")
    } catch(e) {
      alert("加入收藏失败,请使用Ctrl+D进行添加")
    }
  }
}

13. 设为首页

function setHomepage() {
  if (document.all) {
    document.body.style.behavior = 'url(#default#homepage)';
    document.body.setHomePage('http://w3cboy.com')
  } else if (window.sidebar) {
    if (window.netscape) {
      try {
        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")
      } catch(e) {
        alert("该操作被浏览器拒绝,如果想启用该功能,请在地址栏内输入 about:config,然后将项 signed.applets.codebase_principal_support 值该为true")
        }
    }
    var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
    prefs.setCharPref('browser.startup.homepage', 'http://w3cboy.com')
  }
}

14. 加载样式文件

function LoadStyle(url) {
  try {
    document.createStyleSheet(url)
  } catch(e) {
    var cssLink = document.createElement('link');
    cssLink.rel = 'stylesheet';
    cssLink.type = 'text/css';
    cssLink.href = url;
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(cssLink)
  }
}

15. 返回脚本内容

function evalscript(s) {
  if(s.indexOf('<script') == -1) return s;
  var p = /<script[^\>]*?>([^\x00]*?)<\/script>/ig;
  var arr = [];
  while(arr = p.exec(s)) {
    var p1 = /<script[^\>]*?src=\"([^\>]*?)\"[^\>]*?(reload=\"1\")?(?:charset=\"([\w\-]+?)\")?><\/script>/i;
    var arr1 = [];
    arr1 = p1.exec(arr[0]);
    if(arr1) {
      appendscript(arr1[1], '', arr1[2], arr1[3]);
    } else {
      p1 = /<script(.*?)>([^\x00]+?)<\/script>/i;
      arr1 = p1.exec(arr[0]);
      appendscript('', arr1[2], arr1[1].indexOf('reload=') != -1);
    }
  }
  return s;
}

16. 清除脚本内容

function stripscript(s) {
  return s.replace(/<script.*?>.*?<\/script>/ig, '');
}

17. 动态加载脚本文件

function appendscript(src, text, reload, charset) {
  var id = hash(src + text);
  if(!reload && in_array(id, evalscripts)) return;
  if(reload && $(id)) {
    $(id).parentNode.removeChild($(id));
  }
  evalscripts.push(id);
  var scriptNode = document.createElement("script");
  scriptNode.type = "text/javascript";
  scriptNode.id = id;
  scriptNode.charset = charset ? charset : (BROWSER.firefox ? document.characterSet : document.charset);
  try {
    if(src) {
      scriptNode.src = src;
      scriptNode.onloadDone = false;
      scriptNode.onload = function () {
        scriptNode.onloadDone = true;
        JSLOADED[src] = 1;
       };
       scriptNode.onreadystatechange = function () {
         if((scriptNode.readyState == 'loaded' || scriptNode.readyState == 'complete') && !scriptNode.onloadDone) {
          scriptNode.onloadDone = true;
          JSLOADED[src] = 1;
        }
       };
    } else if(text){
      scriptNode.text = text;
    }
    document.getElementsByTagName('head')[0].appendChild(scriptNode);
  } catch(e) {}
}

18. 返回按ID检索的元素对象

function $(id) {
  return !id ? null : document.getElementById(id);
}

19. 跨浏览器绑定事件

function addEventSamp(obj,evt,fn){ 
  if(!oTarget){return;}
  if (obj.addEventListener) { 
    obj.addEventListener(evt, fn, false); 
  }else if(obj.attachEvent){ 
    obj.attachEvent('on'+evt,fn); 
  }else{
    oTarget["on" + sEvtType] = fn;
  } 
}

20. 跨浏览器删除事件

function delEvt(obj,evt,fn){
  if(!obj){return;}
  if(obj.addEventListener){
    obj.addEventListener(evt,fn,false);
  }else if(oTarget.attachEvent){
    obj.attachEvent("on" + evt,fn);
  }else{
    obj["on" + evt] = fn;
  }
}

21. 为元素添加on方法

Element.prototype.on = Element.prototype.addEventListener;
 
NodeList.prototype.on = function (event, fn) {、
  []['forEach'].call(this, function (el) {
    el.on(event, fn);
  });
  return this;
};

以上就是本文的全部内容,喜欢的就收藏吧!

Javascript 相关文章推荐
jQuery中文入门指南,翻译加实例,jQuery的起点教程
Jan 13 Javascript
JavaScript对内存分配及管理机制详细解析
Nov 11 Javascript
jQuery实现当按下回车键时绑定点击事件
Jan 28 Javascript
jquery使用经验小结
May 20 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
Aug 07 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
Oct 27 jQuery
JavaScript运行原理分析
Feb 09 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
Mar 19 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
Sep 25 Javascript
Django+vue跨域问题解决的详细步骤
Jan 20 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
Mar 07 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
Oct 28 Javascript
JQuery实现的按钮倒计时效果
Dec 23 #Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
Dec 23 #Javascript
JS实现的倒计时效果实例(2则实例)
Dec 23 #Javascript
JavaScript对象数组排序函数及六个用法
Dec 23 #Javascript
JavaScript中的函数(二)
Dec 23 #Javascript
分享JavaScript与Java中MD5使用两个例子
Dec 23 #Javascript
js实现正则匹配中文标点符号的方法
Dec 23 #Javascript
You might like
CodeIgniter中实现泛域名解析
2014/07/19 PHP
PHP中利用sleep函数实现定时执行功能实现代码
2016/08/25 PHP
PHP不使用递归的无限级分类简单实例
2016/11/05 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
script标签的 charset 属性使用说明
2010/12/04 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
让angularjs支持浏览器自动填表
2014/11/10 Javascript
JS组件Bootstrap Select2使用方法详解
2020/04/17 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
JavaScript中的工厂函数(推荐)
2017/03/08 Javascript
基于jQuery实现的单行公告活动轮播效果
2017/08/23 jQuery
nodejs实现截取上传视频中一帧作为预览图片
2017/12/10 NodeJs
在Angular中使用JWT认证方法示例
2018/09/10 Javascript
详解ES6 export default 和 import语句中的解构赋值
2019/05/28 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
jquery检测上传文件大小示例
2020/04/26 jQuery
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
打包发布Python模块的方法详解
2016/09/18 Python
Python实现Youku视频批量下载功能
2017/03/14 Python
python图像常规操作
2017/11/11 Python
小米5s微信跳一跳小程序python源码
2018/01/08 Python
深入学习python多线程与GIL
2019/08/26 Python
python使用正则来处理各种匹配问题
2019/12/22 Python
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
2015/07/16 面试题
新大陆软件面试题
2016/11/24 面试题
Java中的类包括什么内容?设计时要注意哪些方面
2012/05/23 面试题
个人自我评价范文
2014/02/05 职场文书
预备党员转正党小组意见
2015/06/01 职场文书
2019优秀干部竞聘演讲稿范文!
2019/07/02 职场文书
陶瓷类经典广告语集锦
2019/10/25 职场文书
Pytest中skip skipif跳过用例详解
2021/06/30 Python
Python加密技术之RSA加密解密的实现
2022/04/08 Python