JavaScript----常用方法
- 用JQ复制一个对象
var newobj=$.extend(true,{},oldobj);
- ajax原理
//①:创建对象 var xhr=new XMLHttpRequest(); //②:打开请求 xhr.open('GET','example.txt',true); //③:发送请求到服务器 xhr.send(); //④:接受响应 xhr.onreadystatechange=function(){} //当readystate值从一个值变为另一个值时,都会触发readystatechange事件; //当readystate==4时,表示已经接收到全部响应数据; //当status==200时,表示服务器成功返回页面和数据; //如果②和③内容同时满足,则可以通过xhr.responseText,获得服务器返回的内容;
- 读取当前页面URL值
function createbzpageaddr() { ///<summary>读取当前页面的地址值</summary> var loca = window.location; ///当前完整url this.url = loca.href; ///当前域名:端口号如jzxco.com:80 this.host = loca.host; ///当前网址#后内容 this.hash = loca.hash; ///当前域名如www.jzxco.com this.hostname = loca.hostname; ///当前主域名如jzxco.com this.maindomain = reurlanalysis(this.hostname, 3); ///当前地址路径栏如http://www.jzxco.com/test.html的test.html this.pathname = loca.pathname; ///当前网址的端口号 this.port = loca.port; ///当前网址的头部分,如http: https: this.protocol = loca.protocol; ///前前网址的?后部分 如http://www.jzxco.com/test.html?tx=1的tx=1 this.search = loca.search; ///当前页面分辨率x this.screenx = screen.width; ///当前页面分辨率y this.screeny = screen.height; ///当前网址的标题 this.title = document.title; }
- 读取标签属性值,无值返回默认值
function rescrvalue(jstag, srcstr, mrz) { ///<summary>读属性的值,如果没有值,或值为异常,则读取默认值</summary> ///<param name="jstag" type="object">需要分析的对像标签</param> ///<param name="srcstr" type="string">对像的属性</param> ///<param name="mrz" type="string">默认值</param> var result = mrz; var jssrcvalue = jstag.getAttribute(srcstr); if (checknull(jssrcvalue)) { result = jssrcvalue; } return result; }
function checknull(sour) { ///<summary>检测sour是否为underfined,或null,是返回false,不是返回true</summary> ///<param name="sour" type="any">源值,为underfined,或null,是返回false,不是返回true</param> return ((sour != null) && (sour != undefined)); }
- 检测是否有值,有返回值,没有返回默认值
function renullval(sour, mrz) { ///<summary>读值,如果没有值,或值为异常,则返回mrz,如果没有mrz则返回""</summary> ///<param name="sour" type="string">源值,如果为异常则返回mrz</param> ///<param name="mrz" type="string">默认值,如果没有则返回""</param> var result = ""; if ((mrz != null) && (mrz != undefined)) { result = mrz; } if ((sour != null) && (sour != undefined)) { result = sour; } return result; }
- 在线与离线
通过navigator.onLine来判断网络的连接状态,返回true和false;online和offline事件可以侦听连接状态的切换时机,有document.body触发。
- 安全类型检测
JavaScript内置类型检测并不可靠,Safari某些版本(<4)typeof正则表达式返回为function,建议使用Object.prototype.toString.call()方法检测数据类型
function isArray(value){ return Object.prototype.toString.call(value)==="[object Array]"; } function isFunction(value){ return Object.prototype.toString.call(value)==="[object Function]"; } function isString(value){ return Object.prototype.toString.call(value)==="[object String]"; } function isObject(value){ return Object.prototype.toString.call(value)==="[object Object]"; }
- 生成随机数
function randomNum(minNum, maxNum) {//包含minNum和maxNum switch (arguments.length) { case 1: return parseInt(Math.random() * minNum + 1, 10); break; case 2: return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10); break; default: return 0; break; } }
- 根据属性值排序
function createComparisonFunction(propertyName) { return function(object1, object2){ var value1 = object1[propertyName]; var value2 = object2[propertyName]; if (value1 < value2){ return -1; } else if (value1 > value2){ return 1; } else { return 0; } }; } var data = [{name: "Zachary", age: 28}, {name: "Nicholas", age: 29}]; data.sort(createComparisonFunction("name")); alert(data[0].name); //Nicholas data.sort(createComparisonFunction("age")); alert(data[0].name); //Zachary
- 数组去重
function unique(a){ var res=[]; for(var i=0,len=a.length;i<len;i++){ for(var j=i+1;j<len;j++){ if(a[i]===a[j]){ j=++i; } } res.push(a[i]); } return res; }
- 阻止事件冒泡
<div id="box"> <div id="box1"></div> </div> <script> $(function(){ $("#box").on('click',function(){ console.log(1); }) $("#box1").on('click',function(event){ console.log(2); event.stopPropagation(); // 阻止事件冒泡 }) }) </script>