javascript 常用函数归纳
来源:互联网 发布:李连杰眼睛 知乎 编辑:程序博客网 时间:2024/05/16 07:33
/* * 序列化 * */ var serialize = function(json){ var str = ''; for(var attr in json){ str += attr + '=' +json[attr] + '&'; } return str.substr(0,str.length-1); } /* * 遍历元素 * callback 会传入index,el 当前元素 * this指向当前对象 * */ var each = function(array,callback){ if (Object.prototype.toString.call(array) !== '[object Array]') return; for(var i= 0,len = array.length;i<len;i++){ callback.call(array[i],i,array[i]); } } /* * 数据排序-按中文拼音字母 * */ var dataSort = function(data){ return data.sort(function(a,b){ return a.msg.localeCompare(b.msg); }) }
/* * ajax 封装 * */ var ajax = function(config){ var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsofr.XMLHTTP'); xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ config.success && config.success(xhr); } } if(config.method){ xhr.open(config.method,config.url,true); config.method == 'get' ? xhr.send() : (xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"), xhr.send(serialize(config.data))); } };
//获取元素的纵坐标function getTop(e) {var offset = e.offsetTop;if (e.offsetParent != null) offset += arguments.callee(e.offsetParent);return offset;}//获取元素的横坐标function getLeft(e) {var offset = e.offsetLeft;if (e.offsetParent != null) offset += arguments.callee(e.offsetParent);return offset;}
一、将noedeList对象转换成数组
伪数组nodeList,不能直接使用数组方法slice()
var arrify = function(list){<span style="white-space:pre"></span>return Array.prototype.slice.call(list);}
一、去掉一个字符串的首尾空格
function trim(s){<span style="white-space:pre"></span>return s.replace(/(^\s*)|(\s*$)/g,"");//正则表达式,去掉首尾空格}
一、得到一个字符串的字节长度
function getBytesLength(str){ var len = str.length; for (var i = 0; i < str.length; i++) { if(str.charCodeAt(i) > 255){ //unicode 字符编码,中文都是>255的 len++; } } return len; }
一、得到dom对象的某css属性
function getStyle(obj,attr){ if(obj.currentStyle){ return obj.currentStyle[attr]; }else { return getComputedStyle(obj,false)[attr]; }}二、按class查找dom对象集合
function getByClass(oParent,sClass){ var aEle = oParent.getElementsByTagName('*'); var results = []; for (var i = 0; i < aEle.length; i++) { var obj = aEle[i]; if(obj.className == sClass){ results.push(obj); } } return results;}
三、给某dom对象设置css属性集
function setStyle(obj,json){ for(var atrr in json){ obj.style[atrr] = json[atrr]; }}
一、检测浏览器类型
function userBrowser(){ var browserName=navigator.userAgent.toLowerCase(); if(/msie/i.test(browserName) && !/opera/.test(browserName)){ alert("IE"); return ; }else if(/firefox/i.test(browserName)){ alert("Firefox"); return ; }else if(/chrome/i.test(browserName) && /webkit/i.test(browserName) && /mozilla/i.test(browserName)){ alert("Chrome"); return ; }else if(/opera/i.test(browserName)){ alert("Opera"); return ; }else if(/webkit/i.test(browserName) &&!(/chrome/i.test(browserName) && /webkit/i.test(browserName) && /mozilla/i.test(browserName))){ alert("Safari"); return ; }else{ alert("unKnow"); } }
二、对象克隆
//克隆有两种方法:一种是“浅克隆”,一种是“深克隆”(深度克隆)。 //浅克隆:基本类型为值传递,对象仍为引用传递。 //深克隆(深度克隆):所有元素均完全复制,并于原对象完全独立(原对象的修改不影响新对象)。 //深度克隆的代码如下(深克隆去掉递归即为浅克隆): Object.prototype.clone = function () { var o = this.constructor === Array ? [] : {}; for (var e in this) { o[e] = typeof this[e] === "object" ? this[e].clone() : this[e]; } return o; }
三、实现Hashtable
function Hashtable(array)//自定义hashtable { this.length = 0; this._hash = new Object(); } Hashtable.prototype.put = function (key, value) { if (typeof (key) != "undefined") { if (this.containsKey(key) == false) { this._hash[key] = typeof (value) == "undefined" ? null : value; this.length++; return true; } else { return false; } } else { return false; } } Hashtable.prototype.remove = function (key) { if (this.containsKey(key)) { delete this._hash[key]; this.length--; } }; Hashtable.prototype.size = function () { return this.length; }; Hashtable.prototype.get = function (key) { return this._hash[key]; }; Hashtable.prototype.containsKey = function (key) { return (key in this._hash);//in可以用于检测属性是否存在 }; Hashtable.prototype.containsValue = function (value) { for (var k in this._hash) { if (this._hash[k] == value) { return true; } } return false; }; Hashtable.prototype.clear = function () { for (var k in this._hash) { delete this._hash[k]; } }; Hashtable.prototype.keys = function () { var keys = new Array(); for (var k in this._hash) { keys.push(k); } return keys; }; Hashtable.prototype.values = function () { var values = new Array(); for (var k in this._hash) { values.push(this._hash[k]); } return values; };四、将指定节点插入到 某节点之后
function insertAfter(newNode, targetNode) { if (targetNode.parentNode.lastChild == targetNode) { targetNode.parentNode.appendChild(newNode); } else { targetNode.parentNode.insertBefore(newNode, targetNode.nextSibling); } }
五、时间倒数计时程序
function time() { var endtime = new Date("2014/04/01,23:06:30"); var nowtime = new Date(); //两时间差为毫秒数,除以1000则转换为秒数 var leftsecond = parseInt((endtime.getTime() - nowtime.getTime()) / 1000); d = parseInt(leftsecond / (3600 * 24)); //计算出相差天数 h = parseInt((leftsecond / 3600) % 24); //计算出总小时,再取余(每过60小时,重新计算) m = parseInt((leftsecond / 60) % 60); //计算出总分钟数,再取余 s = parseInt(leftsecond % 60); //直接取余 alert(d + '天' + h + "小时" + m + "分" + s + "秒"); //setTimeout(time,1000);//每个一秒刷新一次数据 }
六、去掉一个数组中的重复元素
function single(arry) { var temp = []; var result = []; for (var i = 0; i < arry.length; i++) { if (!temp[arry[i]]) { temp[arry[i]] = 1; result.push(arry[i]); } } return result; }
七、判断一个字符串中出现次数最多的字符,统计这个次数
function timecount(str) { var hash = {}; for (var i = 0; i < str.length; i++) { if (!hash[str[i]]) { hash[str[i]] = 1; } else { hash[str[i]]++; } } var maxkey, maxvalue = 0; for (var temp in hash) { if (hash[temp] > maxvalue) { maxkey = temp; maxvalue = hash[temp]; } } alert(maxkey + "/" + maxvalue); }
八、把URL参数解析为一个对象
function parseQueryString(url){ var obj = {}; var temp1 = url.split('?'); if(temp1.length > 1){ obj['target'] = temp1[0]; var temp2 = temp1[1].split('&'); for (var i = 0; i < temp2.length; i++) { var aaa = temp2[i].split('='); obj[aaa[0]] = aaa[1]; } return obj; }else{ obj['target'] = url; return obj; } }
九、跨浏览器控制台日志打印
function log(message){ if(typeof console =='object'){ console.log(message); }else if(typeof opera == 'object'){ opera.postError(message); }else if(typeof java == 'object' && typeof java.lang =='object'){ java.lang.System.out.println(message); }}
十、跨浏览器得到选择的文本
function getSelectedText(textbox){ if(document.selection){ return document.selection.createRange().text; }else{ return textbox.value.substring(textbox.selectionStart,textbox.selectionEnd); }}
十一、跨浏览器选择部分文本
function selectText(textbox,startIndex,stopindex){ if(textbox.setSelectionRange()){ textbox.setSelectionRange(startIndex,stopindex); }else if(textbox.createTextRange()){ var range = textbox.createTextRange(); range.collapse(true); range.moveStart("character",startIndex); range.moveEnd("character",stopindex-startIndex); range.select(); } textbox.focus();}
0 0
- javascript 常用函数归纳
- JavaScript常用代码归纳
- javascript常用技巧归纳
- javascript常用技巧归纳
- oracle常用函数归纳
- javascript常用技巧归纳2
- javascript常用技巧归纳2
- SAP常用系统函数归纳
- SAP常用系统函数归纳
- SAP常用系统函数归纳
- SAP ABAP 常用函数归纳
- JavaScript常用字符串和数组操作归纳
- PHP函数库进程-常用函数归纳
- js 常用表单验证函数归纳
- socket 常用数据结构和操作函数归纳
- SAP ABAP编程 常用函数归纳
- JS常用的对象函数总结归纳
- C语言文件操作常用函数归纳
- 运算与表达式
- ubuntu下mysql安装指南
- Java 开发 2.0: 现实世界中的 Redis
- Python创建cocos2dx项目
- 九度1491解题报告
- javascript 常用函数归纳
- hdu1002 A + B Problem II(大数相加)
- java线程 返回值-回调
- C# DataTable.NewRow 方法
- solr spellcheck 功能
- javascript基础
- 抽象描述排序算法(不适合初学者)
- Fuzhou Problem 1920 Left Mouse Button
- C# DataSet.AcceptChanges 方法