JS选取DOM元素的方法
注意:原生JS选取DOM元素比使用jQuery类库选取要快很多
1、通过ID选取元素
document.getElementById('myid');
2、通过CLASS选取元素
document.getElementsByClassName('myclass')[0];
3、通过标签选取元素
document.getElementsByTagName('mydiv')[0];
4、通过NAME属性选取元素(常用于表单)
document.getElementsByName('myname')[0];

JS修改CSS样式
document.getElementById('myid').style.display = 'none';

JS修改CLASS属性
document.getElementById('myid').className = 'active';

如果有多个CLASS属性,即用空格隔开////////
document.getElementById('myid').className = 'active div-1';


移除该元素上的所有CLASS
document.getElementById('myid').className = ''
注意:使用classList会优于使用className
document.getElementById('myid').classList.item(0);//item为类名的索引
document.getElementById('myid').classList.length;//只读属性
document.getElementById('myid').classList.add('newClass');//添加class
document.getElementById('myid').classList.remove('newClass');//移除class
document.getElementById('myid').classList.toggle('newClass');//切换,有则移除,没有则添加
document.getElementById('myid').classList.contains('newClass');//判断是否存在该class

JS修改文本
document.getElementById('myid').innerHTML = '123';

数组去重的方法
Array.prototype.unique = function(){
  var tem = {}, //新建一个空对象,给数组中没出现过的数添加一个属性
  arr = [], //去重后的数组
  len = this.length; //要进行去重数组的长度
  for(var i=0;i<len;i++){
    if(!temp[this[i]]){ // 判断数组中的数作为属性名在temp里有没有属性值
      temp[this[i]]="abc";//如果没有属性值,则说明没出现过给他一个属性值
      arr.push(this[i]);//同时把这个数添加到去重后的数组里
    }
  }
  return arr; //最后返回这个数组,这是hash算法
}

删除数组中存在重复的元素
function getUnique(someArray) {
  tempArray = someArray.slice(0); //复制数组到临时数组
  for (var i = 0; i < tempArray.length; i++) {
    for (var j = i + 1; j < tempArray.length;) {
      if (tempArray[j] == tempArray[i])
      //后面的元素若和待比较的相同,则删除并计数;
      //删除后,后面的元素会自动提前,所以指针j不移动
      {
        tempArray.splice(j, 1);
      }
      else {
        j++;
      }
      //不同,则指针移动
    }
  }
  return tempArray;
}

判断某个值是否在数组中
Array.prototype.in_array = function (e) {
  for (i = 0; i < this.length; i++) {
    if (this[i] == e)
    return true;
  }
  return false;
}

判断某个值在数组中的位置
Array.prototype.indexOf = function (e) {
  for (i = 0; i < this.length; i++) {
    if (this[i] == e)
    return i;
   }
  return -1;
}

圣杯模式=继承(继承自他,更改自己又不会影响到他)
function inherit(Target,Origin){ //目标元素和初始元素
  function F(){}; //创建一个中间函数
  F.prototype = Origin.prototype; //中间函数的原型继承自原始函数
  Target.prototype = new F(); //构造函数F 目标函数继承自此
  Target.prototype.constructor = Target; //使目标函数的构造器指向他自己
  Target.prototype.uber = Origin.prototype; //在uber里存储目标函数真正继承自哪里
}
Father.prototype.lastName ="hui";
function Father(){}
function Son(){}
inherit(Son,Father);
var son = new Son();
var father new Father();

时间戳转为格式化时间
function formatDate(timestamp, formats) {
  /*
  formats格式包括
  1. Y-M-D
  2. Y-M-D h:m:s
  3. Y年M月D日
  4. Y年M月D日 h时m分
  5. Y年M月D日 h时m分s秒
  示例:console.log(formatDate(1500305226034, 'Y年M月D日 h:m:s')) ==> 2017年07月17日 23:27:06
  */
  formats = formats || 'Y-M-D';
  var myDate = timestamp ? new Date(timestamp) : new Date();
  var year = myDate.getFullYear();
  var month = formatDigit(myDate.getMonth() + 1);
  var day = formatDigit(myDate.getDate());
  var hour = formatDigit(myDate.getHours());
  var minute = formatDigit(myDate.getMinutes());
  var second = formatDigit(myDate.getSeconds());
  return formats.replace(/Y|M|D|h|m|s/g, function(matches) {
    return ({
      Y: year,
      M: month,
      D: day,
      h: hour,
      m: minute,
      s: second
    })[matches];
  });
// 小于10补0
function formatDigit(n) {
  return n.toString().replace(/^(\d)$/, '0$1');
  };
}

千分位显示,常用于价格显示
function toThousands(num) {
  return parseFloat(num).toFixed(2).replace(/(\d{1,3})(?=(\d{3})+(?:\.))/g, "$1,");
}

Js获取页面地址参数
function getParameter(param) {
  var query = window.location.search;// 获取URL地址中?后的所有字符
  var iLen = param.length;// 获取你的参数名称长度
  var iStart = query.indexOf(param);// 获取你该参数名称的其实索引
  if (iStart == -1)// -1为没有该参数
  return "";
  iStart += iLen + 1;
  var iEnd = query.indexOf("&", iStart);// 获取第二个参数的其实索引
  if (iEnd == -1)// 只有一个参数
  return query.substring(iStart);// 获取单个参数的参数值
  return query.substring(iStart, iEnd);// 获取第二个参数的值
}

判断是否数字
function IsNumeric(txt) {
  if (txt == "") {
    return false;
  }
  if (txt.indexOf(",") > 0) {
    txt = txt.replace(",", "");
  }
  if (isNaN(txt)) {
    return false;
  }
  else {
    return true;
  }
}

设置cookie

function setCookie(name, value, iDay)
{
  var oDate=new Date();
  oDate.setDate(oDate.getDate()+iDay);
  document.cookie=name+'='+value+';expires='+oDate;
}

读取cookies

function getCookie(name)
{
  var arr=document.cookie.split('; ');
  for(var i=0;i<arr.length;i++)
  {
    var arr2=arr[i].split('=');
    if(arr2[0]==name)
    {
      return arr2[1];
    }
  }
  return '';
}

删除cookies 

function removeCookie(name)
{
  setCookie(name, 1, -1);
}

jquery trim()函数的用法
recordList = $.trim(recordList);

缓冲图片 loading效果
$("#loading",navTab.getCurrentPanel()).ajaxStart(function() {
  $(this).show();
  }).ajaxComplete(function() {
    $(this).hide();
  });

字符串超出省略
String.prototype.cutstr = function (len) {
  var restr = this;
  var wlength = this.replace(/[^\x00-\xff]/g, "**").length;
  if (wlength > len) {
    for (var k = len / 2; k < this.length; k++) {
    if (this.substr(0, k).replace(/[^\x00-\xff]/g, "**").length >= len) {
      restr = this.substr(0, k) + "...";
      break;
     }
    }
  }
  return restr;
}

加入收藏夹
function AddFavorite(sURL, sTitle) {
  try {
    window.external.addFavorite(sURL, sTitle)
  } catch (e) {
  try {
    window.sidebar.addPanel(sTitle, sURL, "")
  } catch (e) {
    alert("加入收藏失败,请使用Ctrl+D进行添加")
  }
  }
}
设为首页
function setHomepage(homeurl) {
  if (document.all) {
  document.body.style.behavior = 'url(#default#homepage)';
  document.body.setHomePage(homeurl)
  } 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', homeurl)
}
}

跨浏览器绑定事件
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;
  }
}

跨浏览器删除事件
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;
  }
}

判断是否移动设备访问
function isMobileUserAgent() {
  return (/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()));
}

获取页面高度
function getPageHeight() {
  var g = document, a = g.body, f = g.documentElement, d = g.compatMode == "BackCompat" ? a : g.documentElement;
  return Math.max(f.scrollHeight, a.scrollHeight, d.clientHeight);
}
获取页面宽度
function getPageWidth() {
  var g = document, a = g.body, f = g.documentElement, d = g.compatMode == "BackCompat" ? a : g.documentElement;
  return Math.max(f.scrollWidth, a.scrollWidth, d.clientWidth);
}

获取页面scrollLeft
function getPageScrollLeft() {
  var a = document;
  return a.documentElement.scrollLeft || a.body.scrollLeft;
}
获取页面滚动距离
function getScrollOffset(){
  if(window.pageXOffset){
    return{
      X : window.pageXOffset;
      Y : window.pageYOffset
    }
  }else{//IE8及以下
    return{
      X : document.body.scrollLeft+document.documentElement.scrollLeft;
      Y : document.body.scrollTop+document.documentElement.scrollTop;
    }
     }
}

获取窗体可见范围的宽与高
function getViewportOffset() {
  if(window.innerWidth){
    return{
      X : window.innerWidth;
      Y : window.innerHeight
      }
    }else{//IE8及以下
    if(document.compatMode == "BackCompat"){//如果是怪异模式、混杂模式
      return{
        X : document.body.clientWidth;
        Y : document.body.clientHeight;
       }
}else{
  return {
     X : document.documentElement.clientWidth;//标准模式
     Y : document.documentElement.clientHeight
    }
      }
  }
}

查看元素的几何尺寸
domEle.getBoundingClientRect();//6个值 left top right bottom width height 不是实时监控的

查看元素的视觉尺寸
div.offsetWidth
div.offsetHeight
div.offsetLeft //对于无定位的父集返回文档的坐标,对于有定位的父集返回相对最近有定位父集的坐标
div.offsetTop
div.offsetParent //返回最近的有定位的父集

返回一个元素在文档中的坐标
function getElmentPosition(div){
  if(div.offsetParent == body){
  return {
    X : div.offsetLeft;
    Y : div.offsetTop
    }
  }else{

  }
}

让滚动条滚动
scrollTo();//滚动到xxx
scrollBy();//累加滚动xxxx

行间样式-可以写入
div.style.width //必须写到css style里面,获取的都是style里的
div.style.cssFloat//浮动
window.getComputedStyle(div,null) //返回的计算样式都是计算过的,不存在相对单位,只读
window.getComputedStyle(div,null).width
window.getComputedStyle(div,"after") //获取伪元素的样式表
ele.currentStyle//ie专用,获取显示显示样式,只读
ele.currentStyle.width

获取样式属性
function getStyle(elem,prop){
  if(window.getcomputedStyle){
    return window.getComputedStyle(elem,null)[prop];
  }else{
    return elem.currentStyle[prop];
  }
}

随机数时间戳
function uniqueId() {
  var a = Math.random, b = parseInt;
  return Number(new Date()).toString() + b(10 * a()) + b(10 * a()) + b(10 * a());
}

匹配国内电话号码(0511-4405222 或 021-87888822) ////////
function istell(str) {
  var result = str.match(/\d{3}-\d{8}|\d{4}-\d{7}/);
  if (result == null) return false;
  return true;
}

匹配身份证(15位或18位)
function isIdCardNo(num) {
  num = num.toUpperCase();
        //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。
  if (!(/(^/d{15}$)|(^/d{17}([0-9]|X)$)/.test(num)))
  {
    alert('输入的身份证号长度不对,或者号码不符合规定!/n15位号码应全为数字,18位号码末位可以为数字或X。');
    return false;
  }
}

移动电话
function checkMobile(str) {
  if (!(/^1[3|5|8][0-9]\d{4,8}$/.test(str))) {
    return false;
  }
  return true;
}

判断输入是否是有效的电子邮件
function isemail(str) {
  var result = str.match(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/);
  if (result == null) return false;
    return true;
  }

拆分整数与小数 
function splits(tranvalue) {
  var value = new Array('', '');
  temp = tranvalue.split(".");
  for (var i = 0; i < temp.length; i++) {
    value = temp;
  }
  return value;
}

JS创建元素并向其中追加文本
var newdiv = document.createElement('div');
var newtext = document.createTextNode('123');
newdiv.appendChild(newtext);
document.body.appendChild(newdiv);
////////同理:removeChild()移除节点,并返回节点////////
cloneNode()//复制节点
insertBefore()//插入节点(父节点内容的最前面)
//注意:insertBefore()有两个参数,第一个是插入的节点,第二个是插入的位置
//例子:
var list = document.getElementById('myList');
list.insertBefore(newItem,list.childNodes[1]);
//插入新节点newItem到list的第二个子节点

//////insertAfter//////
Element.prototype.insertAfter = function(targetNode,afterNode){
  var beforeNode = afterNode.nextElementSibling;
    if(beforeNode == null){
      afterNode.appendChild(targetNode);
    }else{
      this.insertBefore(targetNode,beforeNode);
  }
}

浮点数加法运算
function FloatAdd(arg1, arg2)
{
var r1,r2,m;
  try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
  try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
  m=Math.pow(10,Math.max(r1,r2))
  return (arg1*m+arg2*m)/m
}

浮点数乘法运算
function FloatMul(arg1,arg2)
{
  var m=0,s1=arg1.toString(),s2=arg2.toString();
  try{m+=s1.split(".")[1].length}catch(e){}
  try{m+=s2.split(".")[1].length}catch(e){}
  return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)
}
function toFixed(num, s) {
  var s = 2;
  var times = Math.pow(10, s)
  var des = num * times + 0.5
  des = parseInt(des, 10) / times
  return des + ''
}

点击空白处消失

$("#a").on("click", function(e){

  $("#menu").show(); 
  $(document).one("click", function(){ 
    $("#menu").hide(); }); e.stopPropagation();
   });
 $("#menu").on("click", function(e){ e.stopPropagation(); });

常见的运动框架

window.onload = function() {

var oDiv = document.getElementById('div1');

oDiv.onmouseover = function() {

startMove(0);

};

oDiv.onmouseout = function() {

startMove( - 150);

};

};

var timer = null;

function startMove(iTarget) {

var oDiv = document.getElementById('div1');

clearInterval(timer);

timer = setInterval(function() {

var speed = 0;

if (oDiv.offsetLeft > iTarget) {

speed = -10;

} else {

speed = 10;

}

if (oDiv.offsetLeft == iTarget) {

clearInterval(timer);

} else {

oDiv.style.left = oDiv.offsetLeft + speed + 'px';

}

},

30);

}

常用的js工具函数的更多相关文章

  1. 更新常用的js工具函数

    在手机调试时打印代码<script src="https://cdn.bootcss.com/vConsole/3.3.0/vconsole.min.js"></ ...

  2. 封装一些常用的js工具函数-不定时更新(希望大家积极留言,反馈bug^_^)

    /*华丽------------------------------------------------------------------------------------------------ ...

  3. js工具函数《转载收藏》

    1.等待所有图片加载 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 var imgObjs = [], count = 0; rotate.prize ...

  4. JS 工具函数 方法(其中js的crc32和php的crc32区别)

    var util = {}; util.indexOf = function (array, item) { for (var i = 0; i < array.length; i++) { i ...

  5. JS工具函数汇总

    备注:http://phpjs.org/  这个站点把PHP常用的方法用js实现了,推荐一下 1.从数组中随机获取几个不重复项 //从一个给定的数组arr中,随机返回num个不重复项 function ...

  6. (总结)工作中常用的js自定义函数——日期时间类

    //设置时间类 var Wsdatatime = function(){ this.today = (new Date()).getTime(); //当前时间 } Wsdatatime.protot ...

  7. JavaScript常用工具函数

    检测数据是不是除了symbol外的原始数据 function isStatic(value) { return ( typeof value === 'string' || typeof value ...

  8. 工作中常用的JS函数整理分享(欢迎大家补充)

    今年在渣X工作整理的常用JS函数 今年来了渣X工作,我所在这个部门分工很奇怪,CSS竟然有专门的人在搞,开发PHP的人员需要处理JS,以至于有时候开发起来不是那么得心应手,感觉把JS和CSS拆开就像是 ...

  9. 爬虫05 /js加密/js逆向、常用抓包工具、移动端数据爬取

    爬虫05 /js加密/js逆向.常用抓包工具.移动端数据爬取 目录 爬虫05 /js加密/js逆向.常用抓包工具.移动端数据爬取 1. js加密.js逆向:案例1 2. js加密.js逆向:案例2 3 ...

随机推荐

  1. BZOJ 1629 [Usaco2005 Nov]Cow Acrobats:贪心【局部证明】

    题目链接:http://begin.lydsy.com/JudgeOnline/problem.php?id=1332 题意: 有n头牛在“叠罗汉”. 第i头牛的体重为w[i],力量为s[i]. 一头 ...

  2. 五年java工作应具备的技能

    具有一到五年开发经验 需要学习内容很多 JVM/分布式/高并发/性能优化/Spring MVC/Spring Boot/Spring Cloud/MyBatis/Netty源码分析等等等 01.透彻理 ...

  3. 分享知识-快乐自己:Hibernate中的 quert.list() 与 quert.iterate() 方法区别

    区别如下: quert.list() : 1):每次都是通过一条语句直接操作数据库取出所有的数据返回(并且将对象存入hibernate缓存中): 2):不会从一二级缓存中查询数据: 3):之执行一条S ...

  4. android自定义控件(一) 官方文档的翻译

    构建自定义组件 Android中,你的应用程序程序与View类组件有着一种固定的联系,例如按钮(Button).文本框(TextView),可编辑文本框(EditText),列表框(ListView) ...

  5. 使用svg的几种方式

    <!-- 图片,背景,框架引入svg文件 --> <img src="test.svg" alt=""> <?xml versio ...

  6. Codeforces Gym 101190 NEERC 16 G. Game on Graph(博弈+拓扑)

    Gennady and Georgiy are playing interesting game on a directed graph. The graph has n vertices and m ...

  7. x264源代码分析-转

    相关说明: 1.     使用版本:  x264-cvs-2004-05-11 2.     这次的分析基本上已经将代码中最难理解的部分做了阐释,对代码的主线也做了剖析,如果这个主线理解了,就容易设置 ...

  8. C# 线程的暂停和恢复的 实现

    我们可以通过ManualResetEvent类来实现. 声明, 初始化时不执行 private static ManualResetEvent _eventWorkList = new ManualR ...

  9. Python操作MySQL数据库9个实用实例

    用python连接mysql的时候,需要用的安装版本,源码版本容易有错误提示.下边是打包了32与64版本. MySQL-python-1.2.3.win32-py2.7.exe MySQL-pytho ...

  10. MFS安装配置使用

    MFS server:192.168.209.18groupadd mfsuseradd -g mfs mfscd /usr/srctar xzvf mfs-1.6.27-5.tar.gzcd mfs ...