zoukankan      html  css  js  c++  java
  • 收藏的一些javascript片段

    学习js也很有一段时间,收集了一些js的片段。特地整理排版了一下,以一个js初学者的视界来分析注释了这些代码段,暂且不去讨论它的性能和优化问题,相信会对一些初学者有用。第一次发文,定许多纰漏和不足的地方,希望可以交流和学习。

    1 javascript动态加载--2 获取字符串的字节长度--3 DOM加载完即执行(有别于onload-页面的一切都加载完后执行)--4获取CSS属性--5 数组检测--6 继承--7 简单事件绑定--8 浏览器判断--9 阻止事件的默认行为--10 数组合并去重--11 将arguments转化为数组--12 数组去重--13 根据生日算年龄--14 获取某个节点下类名为classname的所有元素--15 object.crate的用法--16 获取事件的目标对象--17 获取事件发生时按键状态--18 dom操作--19 阻止事件冒泡--20 元素位置计算--21 元素显示效果--22 闭包的用例--23 实现字符串长度截取--24 获取域名的主机--26 清楚空格--27 替换全部--28 html文档中转义和解码字符--29 判断是否为数字类型--30 设置cookie--31 获取指定cookie--32 加入收藏夹--33 判断IE6--34 跨域解决方法--35 加载样式文件--36 今天是星期几--38 返回按id检索的元素对象--39 元素显示的通用方法--40 insrtAfter函数--41 压缩css样式代码--42 获取当前路径--43 checkbox全选全不选--44 判断移动设备-- 45 克隆对象--46 敏感词--47 常用正则--48 获取数组中的最大最小值--49 反转文本顺序--50 选择框跳转页面--51 批量修改样式--52 获取Url中的get参数值--53 在新窗体中打开页面--54 获取单选按钮的值--55 获取复选框的值.

    1 javascript动态加载

     1 function loadScript(url,callback){//异步加载脚本函数
     2 var script=document.createElement("script");
     3 script.type="text/javascript";
     4 if(script.readyState){
     5     script.onreadystatechange=function(){//ie
     6         if(script.readyState=="loaded"||script.readyState=="complete"){
     7             script.onreadystatechange=null;
     8             callback();//加载成功后的回调函数
     9         }
    10     };
    11 }else{
    12     script.onload=function(){//others
    13         callback();
    14     };
    15 }
    16 script.src=url;
    17 document.getElementsByTagName("head")[0].appendChild(script);
    18 }
    19 
    20 //方法二ajax原理
    21 //创建XMLHttpRequest对象
    22 var xhr=new XMLHttpRequest();
    23 //设置与服务器端的交互方式和参数
    24 xhr.open("get","script.js",true);
    25 //注册回调函数
    26 xhr.onreadystatechange=function(){
    27     //判断和服务器交互是否已经完成
    28     if(xhr.readyState===4){
    29         //与服务器交互成功且返回正确数据
    30         if(xhr.status===200){
    31             var script=document.createElement("script");
    32             script.type="text/javascript";
    33             script.text=xhr.responseText;
    34             document.body.appendChild(script);
    35         }
    36     }
    37 };
    38 xhr.send(null);

    2 获取字符串的字节长度

     1 //方法一
     2 String.prototype.getLength=function(){
     3     var b=0,l=this.length;
     4     if(l){
     5         for(var i=0;i<l;i++){
     6         //字符编码值大于255为汉字(全角)
     7             if(this.charCodeAt(i)>255){
     8                 b+=2;
     9             }else{
    10                 b++;
    11             }
    12         }
    13         return b;
    14     }else{
    15         return 0;
    16     }
    17 };
    18 
    19 //方法二
    20 String.prototype.getLength=function(){
    21     var l=this.length;
    22     var b=l;
    23         for(var i=0;i<l;i++){
    24             //字符编码值大于255为汉字(全角)
    25             if(this.charCodeAt(i)>255){
    26                 b++;
    27             }
    28         return b;
    29 };
    30 
    31 //方法三
    32 String.prototype.getLength=function(){
    33     var b=0,l=this.length;
    34     if(l){
    35         for(var i=0;i<l;i++){
    36             var c=this.chartAt(i);
    37             //字符编码长度大于4为全角字符
    38             if(escape(c).length>4){
    39                 b+=2;
    40             }else if(c!='
    '){
    41                 b++;
    42             }
    43             }
    44             return b;
    45     }else{
    46         return 0;
    47     }
    48 };
    49 
    50 //方法四
    51 String.prototype.getLength=function(){
    52     var b=0,l=this.length;
    53     if(l){
    54         for(var i=0;i<l;i++){
    55             var c=this.chartAt(i);
    56             //编码范围在[u0000-uooff]为半角字符
    57             if(/^[u0000-uooff]为半角字符$/.test(c)){
    58                 b++;
    59             }else if(c!='
    '){
    60                 b+=2;
    61             }
    62             }
    63             return b;
    64     }else{
    65         return 0;
    66     }
    67 };
    68 
    69 //方法五
    70 String.prototype.getLength=function(){
    71     //用"**"替换掉所有全角字符
    72     var s=this.replace(/^[x00-xff]/g,"**");
    73     return s.length;
    74 }

    3 DOM加载完即执行(有别于onload-页面的一切都加载完后执行)

     1 function domLoad(fn){
     2     if(document.addEventLister){//ff支持DOMContentLoaded
     3         document.addEventLister("DOMContentLoaded",fn,false);
     4     }
     5     else if(window.ActiveXobject){    //ie支持defer
     6             document.write("<script id="onload" defer="defer" src='javascript:void(0)'></script>");
     7             document.getElementsById("onload").onreadystatechange=function(){
     8                 if(this.readyState=="complete"){
     9                     this.onreadystatechange=null;
    10                     fn();
    11                 }
    12             }
    13     else if(/webkit/i.test(navigator.userAgent)){//chrome
    14             var timer=setInterval(function(){
    15                     if(document.readyState=="loaded"||"complete"){
    16                         clearInterval(timer)
    17                         fn();
    18                     }
    19                 },10)//延迟一个极小的时间
    20             }
    21 
    22         
    23     }
    24 }

    4 获取CSS属性

     1 function getStyle(obj,n){
     2     if(obj.style[n]){//获取行内样式
     3         return obj.style[n];
     4     }else {
     5         if(obj.currentStyle){//ie
     6             return obj.currentStyle[n];
     7         }else if(obj.defaultView.getComputedStyle){//ff
     8             reurn obj.defaultView.getComputedStyle[obj,null].[n]
     9 
    10         }else{
    11             return null
    12         }
    13 
    14     }
    15 }

    5 数组检测

     1 //方法一
     2 var isArray=function(o){
     3     //不能解决跨执行环境(iframe)慎用
     4     return o instanceof Array||o.constructor==Array;
     5 }
     6 
     7 //方法二
     8 var isArray=function(o){
     9     //把类型检测转化为字符串比较
    10     return typeof o==="object"&& Object.prototype.toString().call(o)==="[object Array]"
    11 
    12 }
    13 //方法三
    14 var isArray=function(o){
    15     //鸭式辨形,若此对象有数组的splice和join两个特有方法即为数组
    16     return o!=null && typeof o=="object"&&'splice' in object &&
    17     'join' in object;
    18 }

    6 继承

     1 function animal(){
     2     this.species="me";
     3 }
     4 //方法一 构造函数绑定
     5 function cat(name,color){
     6     animal.apply(this,arguments);
     7     this.name=name;
     8     this.color=color;
     9 }
    10 //方法二 原型继承
    11 function cat(name,color){
    12     this.name=name;
    13     this.color=color;
    14 }
    15 function extend(child,parent){
    16     var p=parent.prototype;
    17     var c=children.prototype;
    18     for(var i in p){
    19         c[i]=p[i];
    20     return c;
    21 }
    22 extend(cat,animal);
    23 //方法三 直接继承
    24 function cat(name,color){
    25     this.name=name;
    26     this.color=color;
    27 }
    28 cat.prototype=animal.prototype;
    29 cat.prototype.constructor=cat;
    30 //方法四:利用空对象做中介
    31 function cat(name,color){
    32     this.name = name;
    33     this.color = color;
    34 }
    35 function f(){};
    36 f.prototype=animal.prototype;
    37 cat.prototype=new f();
    38 cat.prototype.constructor=cat;

    7 简单事件绑定

     1 //添加事件
     2 function addEvent(obj,type,fn){
     3     if(obj.addEventLister){
     4         obj.addEventLister(type,fn,false);
     5     }else if(obj.attachEvent){//ie
     6         obj.attachEvent('on'+type,fn);
     7     }
     8 }
     9 //移除事件
    10 function removeEvent(obj,type,fn){
    11     if(obj.removeEventListner){
    12         obj.removeEventListner(type,fn,false);
    13     }else if(obj.detachEvent){//ie
    14         obj.detachEvent('on'+type,fn)
    15     }
    16 }

    8 浏览器判断

     1 var sys={};
     2 var ua=navigator.userAgent.toLowerCase();
     3 var s;
     4 (s=ua.match(/msie([d.]+)/))?sys.ie=s[1]:
     5 (s=ua.match(/firefox([d.]+)/))?sys.firefox=s[1]:
     6 (s=ua.match(/chrome([d.]+)/))?sys.chrome=s[1]:
     7 (s=ua.match(/opera([d.]+)/))?sys.opera=s[1]:
     8 (s=ua.match(/safari([d.]+)/))?sys.safari=s[1]:0;
     9 
    10 if (Sys.ie) document.write('IE: ' + Sys.ie);
    11 if (Sys.firefox) document.write('Firefox: ' + Sys.firefox);
    12 if (Sys.chrome) document.write('Chrome: ' + Sys.chrome);
    13 if (Sys.opera) document.write('Opera: ' + Sys.opera);
    14 if (Sys.safari) document.write('Safari: ' + Sys.safari);

    9 阻止事件的默认行为

    1 function stopdefault(evt){
    2     var e=evt||window.event;
    3     if(e.preventDefault){//ff
    4         e.preventDefault
    5     }else{//ie
    6         e.returnValue=false;
    7     }
    8     return false;
    9 }

    10 数组合并去重

     1 Array prototype.unique=function(){
     2     var b=[],c=[];
     3     var a=b.concat(c);
     4     var l=a.length;
     5     //从第一个元素起,看其后的所有元素是否和它相等
     6     for(var i=0;i<l;i++){
     7         for(j=i+1;j<l;j++){
     8             if(a[i]===a[j]){
     9                 //数组拼接,起始第j个元素,删除长度为1,拼接其他元素为空
    10                 a.splice(j,1);
    11             }
    12         }
    13     }
    14     return a;
    15 }

    11 将arguments转化为数组

     1 var arr=Array.prototype.slice(arguments,0);

    //数组切割,将arguments作为slice的执行环境,返回的是数组0为切割起始位置,长度为默认的length 

    12 数组去重

     1 Array.prototype.unique=function(){
     2     var ret=[];//目标数组
     3     var obj={};//中介对象
     4     var l=this.length;
     5     for(var i=0;i<l;i++){
     6         var v=this[i];//获取数组元素
     7         if(!obj[v]){//数组元素作为中介对象的属性,判断此属性是否已在对象中
     8             obj[v]=1;
     9             ret.push(v);
    10         }
    11     }
    12     return ret;
    13 }

    13 根据生日算年龄

     1 function getAge(dateString){
     2     var today=new Date();
     3     var birthday=new Date(dateString);
     4     var age=today.getFullYear()-birthDate.getFullYear();
     5     var m=today.getMonth()-birthDate.getMonth();
     6     //今天所在的月份小于出生月份,或(月份相等且今天的日期小于出生日期)
     7     if(m<0||(m===0&&today.getDay()<birthday.getDay())){
     8         age--;
     9     }
    10     return age;
    11 }

    14 获取某个节点下类名为classname的所有元素

     1 function getclass(node,classname){
     2     if(node.getElementsByClassName){
     3         return node.getElementsByClassName(classname);
     4     }else{//ie
     5         //存储目标元素的数组
     6         var targs=[];
     7         //获取节点对象下的所有元素
     8         var els=node.getElementsByTagName("*");
     9         var elslen=els.length;
    10         for(var i=0;i<elslen;i++){
    11             //元素的class值等于classname
    12             if(els.className==classname){
    13                 targs[targs.length]=els[i];
    14             }
    15     }
    16     return targs;
    17     }
    18 }

    15 object.crate的用法

    1 Object.create=function(o){
    2     var f=function(){};
    3     f.prototype=o;
    4     return new f();
    5 }
    6 var b=Object.create(a);

    16 获取事件的目标对象

    1 function getTarget(evt){
    2     var evt=window.event||evt
    3     if(evt.target){//w3c
    4         return evt.target;
    5     }else(evt.srcElement){//ie
    6         return evt.srcElement;
    7     }
    8 }

    17 获取事件发生时按键状态

    1 function getKey(evt){
    2     var e=evt||window.event;
    3     var keys=[];
    4     if(e.shiftKey){keys.push('shift');}
    5     if(e.ctrlKey){keys.push('ctrl');}
    6     if(e.altKey){keys.push('alt');}
    7     return keys;
    8 }

    18 dom操作

      1 //得到上一个元素
      2 function prev(elem){
      3     do{
      4         elem=elem.previousSibling;
      5     }while(elem&&elem.nodeType!=1);//不为元素节点的时候继续循环
      6     return elem;
      7 }
      8 //得到下一个元素
      9 function next(elem){
     10     do{
     11         elem=elem.nextSibling;
     12     }while(elem&&elem.nodeType!=1);
     13     return elem;
     14 }
     15 //得到第一个元素
     16 function first(elem){
     17     elem=elem.firstChild;
     18     return elem&&elem.nodeType!=1?next(elem):elem;
     19 }
     20 //得到最后一个元素
     21 function last(elem){
     22     elem=elem.lastChild;
     23     //优先级!= > && > ?:
     24     return elem&&elem.nodeType!=1?prev(elem):elem;
     25 }
     26 //得到父元素
     27 function parent(elem,num){
     28     num=num||1;
     29     for(var i=0;i<num;i++){
     30         if(elem!=null){elem=elem.parentNode;}
     31     }
     32     return elem;
     33 }
     34 //得到相关name元素
     35 function tag(name,elem){
     36     return (elem||document).getElementsByTagName(name);
     37 }
     38 //获取指定类名的元素
     39 function hasClass(name,node){
     40     var r=[];
     41     //在构造函数中要用对元字符转义
     42     var re=new RegExp('(^|\s)'+name+'(\s|$)');
     43     var e=document.getElementsByTagName(node||'*');
     44     for(var i=0;i<e.length;i++){
     45         if(re.test(e[i].className)){
     46             r.push(e[i]);
     47         }
     48     }
     49     return r
     50 }
     51 //获取元素文本
     52 function text(e){
     53     var t='';
     54     e=e.childNodes||e;
     55     for(var i=0;i<e.length;i++){
     56         t+=e[i].nodeType!=1?e[i].nodeValue:text(e[i].childNodes);
     57     }
     58     return t;
     59 }
     60 //在一个元素之前插入元素
     61 //在父元素为parent的before之前,插入elem
     62 function before(parent,before,elem){
     63     if(elem==null){
     64         elem=before;
     65         befroe=parent;
     66         parent=before.parentNode
     67     }
     68     var elems=checkElem(elem);
     69     for(var i=elems.length;i>=0;i--){
     70         parent.insertBefore(elem[i],before);
     71     }
     72 }
     73 //创建元素
     74 function create(elem){
     75     //测试是否用命名空间来创建新的元素
     76     return document.createElementNS?document.createElementNS('namespace',elem):document.createElement(elem);
     77 }
     78 //检查参数a(可能是字符串和元素的组合)类型并转化成节点数组
     79 function checkElem(a){
     80     //中介数组
     81     var r=[];
     82     //若参数不为数组,强制转化
     83     if(a.constructor!=Array){a=[a];}
     84     for(var i=0;i<a.length;i++){
     85         //参数数组中的元素类型
     86         if(a[i].constructor==String){
     87             var div=document.createElement('div');
     88             div.innerHTML=a[i];
     89             //提取临时div中的dom结构
     90             for(var j=0;j<div.childNodes.length;j++){
     91                 r[r.length]=div.childNodes[j];
     92             }
     93         }else if(a[i].length){//若为dom节点数组
     94             for(var j=0;j<a[i.length];j++){
     95                 r[r.length]-a[i][j];
     96             }
     97 
     98         }else{r[r.length]=a[i];}
     99     }
    100     return r
    101 }
    102 
    103 //添加元素
    104 function append(parent,elem){
    105     if(elem=null){//若参数为空
    106         elem=parent;
    107         parent=null;
    108     }
    109     //转化参数为标准的节点数组
    110     var elems=checkElem(elem);
    111     for(var i;i<elems.length;i++){
    112         (parent||document.body).appendChild(elem[i]);
    113     }
    114 }
    115 //删除独立的dom
    116 function remove(elem){
    117     if(elem){elem.parentNode.removeChild(elem);}
    118 }
    119 //删除一个节点的所有子节点
    120 function empty(elem){
    121     while(elem.firstChild){
    122         remove(elem.firstChild);
    123     }
    124 }

    19 阻止事件冒泡

    1 function stopBubble(e){
    2     if(e&&e.stoppropagation){
    3         e.stoppropagation();
    4     }else{
    5         window.event.cancelBubble=true;
    6     }
    7 }

    20 元素位置计算

     1 //返回元素的x位置
     2 //event.pageX是鼠标事件相对于文档边沿的位置
     3 function pageX(elem){
     4     //若元素有最近的定位祖先元素offestParent,若没有为document.body
     5     //offest相对于offestParent而言
     6     return elem.offestParent?elem.offestLeft+pageX(elem.offestParent):elem.offestLeft
     7 }
     8 //获取元素的Y位置
     9 function pageY(elem){
    10     return elem.offestParent?elem.offestTop+pageY(elem.offestParent):elem.offestTop;
    11 }
    12 //获取元素相对于父级元素的x位置
    13 function parentX(elem){
    14     //父节点是否为最近的定位父元素
    15     return elem.parentNode==elem.offestParent?elem.offestLeft:pageX(elem.parentNode)-pageX(elem);
    16 }
    17 function parentY(elem){
    18     return elem.parentNode==elem.offestParent?elem.offestTop:pageY(elem.offestParent)-pageY(elem);
    19 }

    21 元素显示效果

     1 //隐藏元素
     2 function hide(elem){
     3     //getStyle()已经封装好
     4     var curDisplay=getStyle(elem,'display');
     5     if(curDisplay!='none'){
     6         elem.oldDisplay=curDisplay;
     7     }else{elem.style.display='none';}
     8 }
     9 //显示元素
    10 function show(elem){
    11     //'block'的存在强制显示
    12     elem.style.display=elem.oldDisplay||'block';
    13 }
    14 //设置透明度
    15 function setOpacity(elem,level){
    16     if(elem.filters){//ie中用滤镜filter,alpha通道
    17         elem.style.filter='alpha(opacity='+level+')';
    18         elem.style.zoom=1;//zoom为对象缩放比例
    19     }else{
    20         elem.style.opacity=level/100;
    21     }
    22 }
    23 function slideDown(elem){
    24     //从高度0开始
    25     elem.style.height='0px';
    26     //先显示elem,但看不到它
    27     show(elem);
    28     //元素最终的完整高度
    29     var h=fullHeight(elem);
    30     //在一秒内执行20次动画
    31     for(var i=0;i<100;i+=5){
    32     //设置setTimeout按指定时间执行
    33     /*把i保存在内部函数的局部变量pos中,*/
    34         (function(){
    35             var pos=i;
    36             setTimeout(function(){
    37                 elem.style.height=(pos/100)*h+'px';
    38             },(pos+1)*5);
    39         })();
    40     }
    41 }
    42 //透明度渐显
    43 function fadeIn(elem){
    44     //setOpacity(emel, 0); 
    45     show(elem);
    46     for(var i=0; i<=100; i+=10){
    47         (function(){
    48             var pos = i;
    49             setTimeout(function(){
    50                 setOpacity(elem, pos);
    51             }, (pos + 1) * 10);
    52         })();
    53     }
    54 }

    22 闭包的用例

     1 //闭包中局部变量是引用而非拷贝
     2 function say667(){
     3     var num=666;
     4     var sayAlert=function(){alert(num);}
     5     num++;
     6     return sayAlert;
     7 }
     8 var say=say667();
     9 say();
    10 //多个函数绑定同一个闭包,因为他们定义在同一个函数内
    11 function setupSomeGlobals(){
    12  var num=666;
    13  gAlertNumber=function(){alert(num);}
    14  gIncreaseNumber=function(){num++;}
    15  gSetNumber=function(x){num=x;}
    16 }
    17 setupSomeGlobals()//为三个全局变量赋值
    18 gAlertNumber();
    19 gIncreaseNumber();
    20 gAlertNumber();
    21 gSetNumber(12);
    22 gAlertNumber()
    23 //外部函数所有局部变量都在闭包内,即使这个变量声明在内部函数定义之后。
    24 function sayAlice(){
    25     var sayAlert=function(){alert(alice);}
    26     var alice='hello';
    27     return sayAlert
    28 }
    29 var hello=sayAlice();
    30 hello()

    23 实现字符串长度截取

     1 function cutstr(str,len){
     2     var temp;//临时字符
     3     var count=0;//记录获取的字符长度
     4     var patern =/[^x00-xff]/;
     5     var str1="";
     6     //js中length表示字符数目,而不是长度
     7     for(var i=0,l=str.length;i<l;i++){
     8         if(count<len-1){
     9             temp=str.substr(i,1)
    10             if(patern.exec(temp)==null){
    11                 count=count+1;
    12             }else{count=count+2;}
    13             str1+=temp
    14         }else{break}
    15     }
    16     return str1+"...";
    17 }

    24 获取域名的主机

     1 //var url=" http://www.baidu.com/
     2 //http是传输协议,www是主机名(在服务器规划是取得别名),baidu.com是域名 
     3 function getHost(url){
     4     var host="null";
     5     if(typeof url=="undefined"||null){
     6         url=window.location.href;
     7     }
     8     var regex=/^w+://([^/]*).*/;
     9     var match=url.match(regex);
    10     if(typeof match!="undefined"&&match!=null){
    11      host=match[1];
    12     }
    13     return host;
    14 }

    26 清楚空格

    1 String.prototype.trim=function(){
    2     //?表示*可选最终就是个不定长度的字符.可选长度为0或n
    3     var space=/^s*(.*?)s+$/;
    4     retuen this.replace(space,"$s1");
    5 }

    27 替换全部

    1 //用s2替换s1
    2 String.prototype.replaceAll=function(s1,s2){
    3     return this.replace(new RegExp(s1,"gm"),s2)
    4 }

    28 html文档中转义和解码字符

    1 // &,",<,>
    2 function htmlEncode(text){
    3     return text.replace(/&/g,'&amp;').replace(/"/g,'&quot;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
    4 }
    5 function HtmlDecode(text) {
    6     return text.replace(/&amp;/g, '&').replace(/&quot;/g, '"').replace(/&lt;/g, '<').replace(/&gt;/g, '>')    }

    29 判断是否为数字类型

    1 function isDigit(value){
    2      var pattern=/^[0-9]*$/;
    3      //exec匹配结果是一个数组,null未找到匹配
    4      if(pattern.exec(value)==null||value==""){
    5          return false
    6      }else{
    7          return true;
    8      }
    9  }  

    30 设置cookie

     1 function addCookie(name,value,expiresHours){
     2      //escape避免乱码
     3     var cookieString=name+"="+escape(value);
     4     //判断是否设置过期时间
     5         if(expiresHours>0){
     6               var date=new Date();
     7               //使用GMT时间。获取毫秒数
     8               date.setTime(date.getTime+expiresHours*3600*1000);
     9           cookieString=cookieString+"; expires="+date.toGMTString();
    10 }
    11       document.cookie=cookieString;
    12 } 

    31 获取指定cookie

     1 function getCookie(name){
     2     //获取cookie字符串
     3     var strCookie=document.cookie;
     4     //将字符串用;分割成各单个cookie数组
     5     var arrCookie=strCookie.split(";");
     6     for(var i=0;i<arrCookie.length;i++){
     7         //对每一个cookie处理
     8         var arr=arrCookie[i].split("=");
     9         if("name"==arr[0]){
    10             name=arr[1];
    11             break;
    12         }
    13     }
    14 }

    32 加入收藏夹

     1 function AddFavorite(sUrl,sTitle){
     2     try{//ie
     3         window.external.addFavorite(sUrl,sTitle);
     4     }catch(e){
     5         try{//ff
     6             window.sideBar.addPanel(sTitle,sUrl,"");
     7         }catch(e){//其他
     8             alert("加入收藏失败,请使用Ctrl+D进行添加");
     9         }
    10     }
    11 }

    33 判断IE6

    1 //方法一
    2 var isIE6= /msie 6/i.test(navigator.userAgent); 
    3 
    4 //方法2:  
    5 var isIE6= navigator.appVersion.indexOf("MSIE 6")>-1; 
    6 //方法一和二是通过navigator对象获取浏览器信息字符串,获取相关信息确认是否是IE6

    34 跨域解决方法

     1 //方法一 document.domain+iframe
     2 //这种方式适用于{www.kuqin.com, kuqin.com, script.kuqin.com, css.kuqin.com}中的任何页面相互通信。
     3 www.a.com的a.html
     4 document.domain='a.com';//配置其主域为要访问页面的主域
     5 var ifr=document.createElement('iframe');
     6 ifr.src='http://script.a.com/b.html';//这个iframe中存放要访问的页面
     7 ifr.style.style='none';
     8 document.appendChild(ifr);
     9 ifr.onload=function(){
    10     //获取iframe的文档
    11     var doc=ifr.contentDocument||ifr.contentWindow.documnet;
    12     //在a.html中操作
    13     alert(doc.getElementsByTagName("h1")[0].nodeValue);
    14 }
    15 script.a.com的b.html文档中document.domain='a.com'
    16 //方法二  动态创建script(jsonp)
    17 function load_script(url, callback){  
    18     var head = document.getElementsByTagName('head')[0];  
    19     var script = document.createElement('script');  
    20     script.type = 'text/javascript';  
    21     script.src = url;  
    22     //借鉴了jQuery的script跨域方法  
    23     script.onload = script.onreadystatechange = function(){  
    24 if((!this.readyState||this.readyState === "loaded"||this.readyState === "complete")){  
    25             callback && callback();  
    26             // Handle memory leak in IE  
    27             script.onload = script.onreadystatechange = null;  
    28             if ( head && script.parentNode ) {  
    29               head.removeChild( script );  
    30             }  
    31         }  
    32     };  
    33     // Use insertBefore instead of appendChild  to circumvent an IE6 bug.  
    34     head.insertBefore( script, head.firstChild );  
    35 }  
    36 //callback对跨域中的数据进行操作
    37 load_script('http://suggestion.baidu.com/su?wd=w',function(){alert('loaded')});
    38 //方法三window.name实现的跨域数据传输(略)

    35 加载样式文件

     1 function loadStyle(url){
     2     try {
     3         document.createStyleSheet(url);
     4     }catch(e){
     5         var cssLink=document.createElement('link');
     6         cssLink.rel='stylesheet';
     7         cssLink.type='text/css';
     8         cssLink.href=url;
     9         var head=document.getElementsByTagName('head')[0];
    10         head.appendChild(cssLink);
    11     }
    12 }

    36 今天是星期几

     1 "今天是星期"+"0123456".charAt(new Date().getDay()); 

    38 返回按id检索的元素对象

     1 function $(id){ 2 return !id?null:document.getElementsById(id) 3 } 

    39 元素显示的通用方法

     1 function display(id){
     2     var obj=$(id);
     3     //visibility占用空间
     4     if(obj.style.visibility){
     5         obj.style.visibility=obj.style.visibility=='visibe'?'hidden':'visible'
     6     }else{
     7         //display不占用空间
     8         obj.style.display=obj.style.display==''?'none':''
     9     }
    10 }

    40 insrtAfter函数

     1 function insertAfter(newChild,targetChild){
     2     //获取待操作节点的父节点
     3     var parent=targetChild.parentNode;
     4     if(parent.lastChild==targetChild){
     5         //若目标节点为最后子节点,替换
     6         parent.lastChild=newChild;
     7     }else{
     8         //在目标节点的兄弟节点之前插入
     9         parent.insertBefore(newChild,targetChild.nextSibling)
    10     }
    11 
    12 } 

    41 压缩css样式代码

    1 function yasuoCss(s){
    2     s=s.replace(//*(.|
    )*?*//g,"");//删除注释
    3     s=s.replace(/s*([{}:;\,])s*/g,"$1")
    4     s=s.replace(/\,[s.#d]*{/g,"{");//容错处理
    5     s=s.replace(/;s*;/g,";");//清除连续分号
    6     s=s.match(/^s*(S+(s+S+)*)s*$/)//去掉首尾空白
    7     return (s===null)?"":s[1]
    8 }

    42 获取当前路径

    1 var currentPageUrl='';
    2 if(typeof this.href==="undefined"){
    3     currentPageUrl=document.location.tostring.toLowerCase();
    4 }else{
    5     currentPageUrl=this.href.tostring.toLowerCase();
    6 }

    43 checkbox全选全不选

     1  function checkAll() { 
     2           var selectall = document.getElementById("selectall"); 
     3           var allbox = document.getElementsByName("allbox"); 
     4             if (selectall.checked) { 
     5                     for (var i = 0; i < allbox.length; i++) { 
     6                             allbox.checked = true; 
     7                     } 
     8             } else { 
     9                     for (var i = 0; i < allbox.length; i++) { 
    10                             allbox.checked = false; 
    11                     } 
    12             } 
    13     } 

    44 判断移动设备

    1  function isApple(){
    2      return (/iphone|ipod|ipad|macintosh/i.test(navigation.userAgent.toLowerCase()));
    3  }   
    4  function isAndroid(){
    5      return (/android/.test(navigator.userAgent.toLowerCase()));
    6  }

     45 克隆对象

     1 //单步操作
     2 function clone(obj){
     3     if(obj===null||"object"!=typeof obj) return obj;
     4     //handle date
     5     if(obj instanceof Date){
     6         var copy=new Date();
     7         copy.setTime(obj.getTime());
     8         return copy;
     9     }
    10     //handle Array
    11     if(obj instanceof Array){
    12         var copy=[];
    13         for(var i=0;var len=obj.length;i++){
    14             copy[i]=clone(obj[i]);
    15         }
    16         return copy;
    17     }
    18     //handle object
    19     if(obj instanceof Object){
    20         var copy={};
    21         for(var attr in obj){
    22             if(obj.hasOwnProperty(attr)){
    23                 copy[attr]=clone(obj.attr);
    24             }
    25         }
    26         return copy
    27     }
    28     throw new Error("Unable to copy obj! ");
    29 }
    30 //利用递归深度克隆
    31 Object.prototype.clone=function(){
    32     var objClone;
    33     if(this.constructor==Object){
    34         objClone=new this.constructor();
    35     }else{
    36         objClone=new this.constructor(this.valueOf());
    37     }
    38     for(var key in this){  
    39         if ( objClone[key] != this[key] ){   
    40             if ( typeof(this[key]) == 'object' ){   
    41                 objClone[key] = this[key].Clone();  
    42             }else{  
    43                 objClone[key] = this[key];  
    44             }  
    45         }  
    46     }  
    47     objClone.toString = this.toString;  
    48     objClone.valueOf = this.valueOf;  
    49     return objClone;   
    50 }   
    51 }

    46 敏感词过滤

     1 function badWord(text,words){
     2     //将文本转化成字符串
     3     text=String(text||'');
     4     words=words||[];
     5     var reg=new RegExp(words.join('|'),'g');
     6     var self=this;
     7     return text.replace(reg,function($0){
     8         var length=String($0||'').length;
     9         //用*替代
    10         return self.repeat('*',length);
    11     })
    12 }

    47 常用正则

     1 var RegExps={
     2     isEmail:function(mail){
     3         return /^([a-z0-9]+[_-.]?)*[a-z0-9]+@([a-z0-9]+[_-.]?)*[a-z0-9])+.[a-z]{2,5}/i.test(mail);
     4     },
     5     isIdCard:function(card){
     6         return /^(d{14}|d{17})(d|[xX])/.test(card);
     7     },
     8     isMobile:function(mobile){
     9         return /^0*1d{10}$/.test(mobile);
    10     },
    11     isQQ:function(qq){
    12         return /^[1-9]d{4,10}$/.test(qq);
    13     },
    14     isTel:function(tel){
    15         return /^d{3,4}-d{7,8}(-d{1,6})?$/.text(tel);
    16     },
    17     isUrl:function(url){
    18         return /https?://[a-z0-9.-]{1,255}.[0-9a-z-]{1,255}/i.test(url);
    19     },
    20     isColor:function(color){
    21         return /#([da-f]{3}){1,2}$/i.test(color);
    22     },
    23     isFloat:function(num){
    24         return/^(([1-9]d*)|(d+.d+)|0)/.test(num);
    25     },
    26     isInt:function(num){
    27         return /^[1-9]d*$/.test(num);
    28     },
    29 }

    48 获取数组中的最大最小值

    1 //利用math对象
    2 var max=Math.max.apply(null,array);
    3 var min=Math.min.apply(null,array);

    49 反转文本顺序

    1 //分解字符串为数组
    2 var aTxt='反转文本顺序'.split('');
    3 var str='';
    4 for(var i=aTxt.length-1;i>0;i--){
    5     str+=aTxt[i]
    6 }

    50 选择框跳转页面

    1 <select onchange="window.open(this.options[this.selectedIndex].value)"> 
    2 <option value="http://www.baidu.com/" selected >百度</option>
    3 <option value="http://www.163.com/">网易</option> 4 </select>

    51 批量修改样式

     1 //给一个HTML元素设置css属性,如
     2 var head= document.getElementById("head");
     3 head.style.width = "200px";
     4 head.style.height = "70px";
     5 head.style.display = "block";
     6 //这样写太罗嗦了,为了简单些写个工具函数,如    
     7 function setStyle(obj,css){
     8   for(var atr in css){
     9     obj.style[atr] = css[atr];
    10   }
    11 }
    12 var head= document.getElementById("head");
    13 setStyle(head,{"200px",height:"70px",display:"block"})
    14 //使用了cssText属性,后在各浏览器中测试都通过了。
    15 var head= document.getElementById("head");
    16 head.style.cssText="200px;height:70px;display:bolck";

    52 获取Url中的get参数值

     1 function get_get(){
     2     //将url地址用?分割成两个字符数组
     3     querystr=window.location.href.split("?");
     4     if(querystr[1]){
     5         //将上面得到的字符数组1用&分割成一个新字符数组
     6         Gets=query[1].split("&");
     7         //新建一个存储结果的数组
     8         get=new Array();
     9         for(var i=0;i<Gets.length;i++){
    10             //每个元素用=分割形成又一个临时数组
    11             tem_arr=Gets[i].split("=");
    12             key=tmp_arr[0];
    13             get[key]=tmp_arr[1]
    14         }
    15     }
    16     return get;
    17 }

    53 在新窗体中打开页面

      1 window.open ('page.html','newwindow','height=100,width=400,top=0,left=0,  

     toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')

    2 //宽为100,高为400,距屏顶0象素,屏左0象素,无工具条,无菜单条,无滚动条,不可调整大小,

    无地址栏,无状态栏。 

    54 获取单选按钮的值

     1 //<input type="radio" name="browser" value="Internet Explorer" />Internet Explorer<br />,一个表单里面有多个单选框,且name属性一致
     2 function get_radio_value(field){//field为单选按钮的name属性值
     3     if(field&&field.length){
     4         for(var i=0;i<field.length;i++){
     5             if(field[i].checked){//若此按钮选中
     6                 return field[i].value;
     7             }
     8         }else{return;}
     9     }
    10 }

    55 获取复选框的值

     1 function get_checkbox_value(field){    
     2     if(field&&field.length){    
     3        for(var i=0;i<field.length;i++){ 
     4        //被选中且不能禁用           
     5            if(field[i].checked && !field[i].disabled){
     6               return field[i].value;
     7             }
     8        }        
     9     }else {
    10         return;
    11      }            
    12 }





  • 相关阅读:
    15.mysql数据库操作与Paramiko模块
    14.Gevent协程 SelectPollEpoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitMQ队列 RedisMemcached缓存 Paramiko SSH Twsited网络框架
    13 线程threading模块 join 线程锁之LockRlock信号量 将线程变为守护进程 Event事件  queue队列 生产者消费者模型 Queue队列 开发一个线程池 进程 语法 进程间通讯 进程池  多进程multiprocessing
    12.异常 isinstance 反射
    2.semantic-ui的官网文档说明
    11.Socket网络编程
    10.面向对象高级语法部分 经典类vs新式类   静态方法、类方法、属性方法 类的特殊方法 反射 异常处理 Socket开发基础
    9.对象 面向对象的特性:封装、继承、多态 类、方法、 #数据描述
    8.模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式
    1.sematic ui 安装
  • 原文地址:https://www.cnblogs.com/mingwaer/p/3638461.html
Copyright © 2011-2022 走看看