⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 v2.4.js

📁 js封装类 项目中常用js封装 希望对大家有帮助
💻 JS
📖 第 1 页 / 共 5 页
字号:

/**************
默认的 element.className = "" ;是 替换样式。
如果我们是想追加样式, 那么使用下面的方法
用法;
addClass(element,"classname");
用了这个函数后:
那么将追加成 :
<p class=”b  classname”>aaaaaaaaaaaaaaaaaaa</p>
**************/
function addClass(element,value) { //追加样式,而不是替换样式
  if (!element.className) {
    element.className = value;
  } else {
    element.className+= " ";
    element.className+= value;
  }
}


/**************
表格隔行变色。
注意:引入 我们自己写的 addClass()函数。
**************/
function stripeTables() {
  if (!document.getElementsByTagName) return false;
  var tables = document.getElementsByTagName("table");
  for (var i=0; i<tables.length; i++) {
    var odd = false;
    var rows = tables[i].getElementsByTagName("tr");
    for (var j=0; j<rows.length; j++) {
      if (odd == true) {
        addClass(rows[j],"odd");//odd为样式名
        odd = false;
      } else {
        odd = true;
      }
    }
  }
}

/**************
表格滑过变色.
注意:引入 我们自己写的 addClass()函数。
**************/
function highlightRows() {
  if(!document.getElementsByTagName) return false;
  var rows = document.getElementsByTagName("tr");
  for (var i=0; i<rows.length; i++) {
    rows[i].oldClassName = rows[i].className
    rows[i].onmouseover = function() {
      addClass(this,"highlight");//highlight为样式名
    }
    rows[i].onmouseout = function() {
      this.className = this.oldClassName
    }
  }
}



/********************
隔行变色 + 滑过变色 
参数设置:
id 为表格的id
class1为奇数行的颜色
class2为偶数行的颜色
class3为鼠标滑过颜色
用法:
sti_table("cssrain" , "c" , "a" ,"d" ); 
  <style>
.a{
background-color : #eee;
}

.c{
background-color : #96dd33;
}

.d{
background-color : #456577;
}
  </style>
  <TABLE id="cssrain" >
<TR>
	<TD>1</TD>
</TR>
</table>
*********************/
function sti_table( id , class1 , class2 , class3  ){
  var para = document.getElementById(id);
  var tr  = para.getElementsByTagName("tr");
  var odd = false;
  for(var i=0 ; i < tr.length ; i++ ){
        if(odd==true){
         tr[i].className = class1;      
		 odd=false;

		 tr[i].onmouseover =function(){
		    this.className = class3;
		 }
	   	 tr[i].onmouseout =function(){
		    this.className = class1;
		 }
		}
		else{
		 tr[i].className = class2;   
         odd=true;

		  tr[i].onmouseover =function(){
		    this.className = class3;
		 }
		  tr[i].onmouseout =function(){
		    this.className = class2;
		 }
		}
  }

}


//格式化日期和数字
//用法:
//var date=new Date();
//var dateText = format("YYYY-MM-DD",date)
//var numberText=format("###.#",5432.545)
//document.write(dateText)
//document.write("<br />"+numberText)
//like the ISO 8895
//also see Java's SimpleDateFormat.
//
//Letter  Date or Time Component  Presentation       Examples          UserDic
//Y       Year                    Year            1996; 96
//M       Month in year           Month           July; Jul; 07     *
//D       Day in month            Number          10
//w       Day in week             Text            Tuesday; Tue; 2   *
//h       Hour in day (0-23)      Number             0
//m       Minute in hour          Number            30
//s       Second in minute        Number             55

//Pattern                             Sample
//YYYY-MM-DD hh:mm:ss          2001-07-04 12:08:56
//YYYY-MM-DDThh:mm:ss          2001-07-04T12:08:56
//YYYY/MM/DDThh:mm:ss          2001/07/04T12:08:56
//YYYY年MM月DD日,周w            2008年12月12日,周3
//hh:mm                          12:08


//符号说明:
//0 表示补0 的数字占位
//. 表示小数点
//, 数字分组符号 如123,456.123
//# 表示不补0 的数字占位
//
//Number                  Pattern     Result
//10000000000001124       #,###.###   10,000,000,000,001,124.000
//123.125                 ##,#.#,#    1,2,3.1,3
//123.125                 ###.#       123.1
//123.125                 00000       00123
//123.125                 .000        .125
//0.125                   0.0000      0.1250
//0.125                   00.0000     00.1250
//
//使用代码:
//var numberText = format("##.#",123.456)//output 123.45

function format(pattern,data){
    if(data instanceof Date){
        function dl(data,format){//3
            format = format.length;
            data = data || 0;
            return format = 1 ? data : String(Math.pow(10,format)+data).substr(-format);
        }
        return pattern.replace(/([YMDhsm])\1*/g,function(format){
            switch(format.charAt()){
            case 'Y' :
                return dl(data.getFullYear(),format);
            case 'M' : 
                return dl(data.getMonth()+1,format);
            case 'D' : 
                return dl(data.getDate(),format);
            case 'w' :
                return data.getDay()+1;
            case 'h' :
                return dl(data.getHours(),format);
            case 'm' : 
                return dl(data.getMinutes(),format);
            case 's' : 
                return dl(data.getSeconds(),format);
            }
        });
    }else if('number' == typeof data){
        //hack:purePattern as floatPurePattern
        function trim(data,pattern,purePattern){
            if(pattern){
                if(purePattern){
                    if(purePattern.charAt() == '0'){
                        data = data + purePattern.substr(data.length);
                    }
                    if(purePattern!=pattern){
                        var pattern = new RegExp("(\\d{"+pattern.search(/[^\d#]/)+"})(\\d)");
                        while(data.length < (data = data.replace(pattern,'$1,$2')).length);
                    }
                    data = '.' + data
                }else{
                    var purePattern = pattern.replace(/[^\d#]/g,'');
                    if(purePattern.charAt() == '0'){
                        data = purePattern.substr(data.length) + data;
                    }
                    if(purePattern!=pattern){
                        var pattern = new RegExp("(\\d)(\\d{"+(pattern.length-pattern.search(/[^\d#]/)-1)+"})\\b");
                        while(data.length < (data = data.replace(pattern,'$1,$2')).length);
                    }
                }
                return data;
            }else{
                return '';
            }
        }
        return pattern.replace(/([#0,]*)?(?:\.([#0,]+))?/,function(param,intPattern,floatPattern){
            var floatPurePattern = floatPattern.replace(/[^\d#]/g,'');
            data = data.toFixed(floatPurePattern.length).split('.');
            return trim(data[0] ,intPattern) + trim(data[1] || '',floatPattern,floatPurePattern);
        })
    }
}


//除法函数,用来得到精确的除法结果 
//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。 
//调用:accDiv(arg1,arg2) 
//返回值:arg1除以arg2的精确结果 
function accDiv(arg1,arg2){ 
var t1=0,t2=0,r1,r2; 
try{t1=arg1.toString().split(".")[1].length}catch(e){} 
try{t2=arg2.toString().split(".")[1].length}catch(e){} 
with(Math){ 
r1=Number(arg1.toString().replace(".","")) 
r2=Number(arg2.toString().replace(".","")) 
return (r1/r2)*pow(10,t2-t1); 
} 
} 
//给Number类型增加一个div方法
//用法: (37).div(3);
Number.prototype.div = function (arg){ 
return accDiv(this, arg); 
} 

//乘法函数,用来得到精确的乘法结果 
//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。 
//调用:accMul(arg1,arg2) 
//返回值:arg1乘以arg2的精确结果 
function accMul(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) 
} 
//给Number类型增加一个mul方法
//用法: (37).mul(3);
Number.prototype.mul = function (arg){ 
return accMul(arg, this); 
} 

//加法函数,用来得到精确的加法结果 
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。 
//调用:accAdd(arg1,arg2) 
//返回值:arg1加上arg2的精确结果 
function accAdd(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 
} 
//给Number类型增加一个add方法
//用法: (37).add(3);
Number.prototype.add = function (arg){ 
return accAdd(arg,this); 
}

//减法函数,用来得到精确的减法结果 
function Subtr(arg1,arg2){
     var r1,r2,m,n;
     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));
     //last modify by deeka
     //动态控制精度长度
     n=(r1>=r2)?r1:r2;
     return ((arg1*m-arg2*m)/m).toFixed(n);
} 
//给Number类型增加一个add方法
//用法:  (5.5).sub(37.5) 
Number.prototype.sub = function (arg){ 
return Subtr(arg,this); 
}


//格式化字符串
/*
用法:
var cls="redclass";
var text="My name is ";
var str='<div class="{0}">{1} {2}</div>'.diy_format(cls, text,"cssrain");
alert(str);
*/
String.prototype.diy_format=function(){
        var args=arguments;
        return this.replace(/\{(\d+)\}/g, function(m, i){
                return args[i];}
				);}


//去掉数组中重复的元素
//用法:
//var arr=["abc",85,"abc",85,8,8,1,2,5,4,7,8];
//alert(  arr.strip()  );
Array.prototype.strip=function(){
	if(this.length<2) return [this[0]]||[];
	var arr=[];
	for(var i=0;i<this.length;i++){
		arr.push(this.splice(i--,1));
		for(var j=0;j<this.length;j++){
			if(this[j]==arr[arr.length-1]){
				this.splice(j--,1);}}}
	return arr;
	}



//得到l-h下标的数组
//用法:
//var arr=["abc",85,"abc",85,8,8,1,2,5,4,7,8];
//alert( arr.limit(2,4) ); //输出  abc , 85 ,8  
Array.prototype.limit = function(l, h) {
var _a = this; var ret = []; 
l = l<0?0:l; h = h>_a.length?_a.length:h;
for (var i=0; i<_a.length; i++) {
if (i>=l && i<=h) ret[ret.length] = _a[i];
if (i>h) break;
}; return ret;
}

//指定array是否包含指定的item
//array.exists( item ) 包含true;不包含false;
//用法:
//var array1  = [1,2,3,4,5,"a","b"];
//var b1  =  array1.exists("b") // 包含true;不包含false;//alert(b1)
function Array.prototype.exists( item )
{
	for( var i = 0 ; i < this.length ; i++ )
	{
		if( item == this[i] )
		{
			return true;
		}
	}
	return false;
}

//删除指定的item
//array.remove(item) 删除item
//用法:
//var array1  = [1,2,3,4,5,"a","b"];
//array1.remove("2");
//alert( array1[1] );
function Array.prototype.remove( item )
{
	for( var i = 0 ; i < this.length ; i++ )
	{
		if( item == this[i] )
		{
			break;
		}
	}
	if( i == this.length )
	{
		return;
	}
	for( var j = i ; j < this.length - 1 ; j++ )
	{
		this[ j ] = this[ j + 1 ];
	}
	this.length--;
}


//得到url参数值
// url: http:www.cssrain.cn/article.asp?id=100
// var id = getParameter("id");
// alert(id);
function getParameter(key)
{
	var parameters = unescape(window.location.search.substr(1)).split("&");
	for( var i = 0 ; i < parameters.length ; i++ )
	{
		var paramCell = parameters[i].split("=");
		if( paramCell.length == 2 && paramCell[0].toUpperCase() == key.toUpperCase() )
		{
			return paramCell[1];
		}
	}
	return new String();
}



//获取某月有几天 ,月份是从 0开始
//用法:alert(  jscomGetMonthDays(2008 ,  4)   )
function jscomGetMonthDays(year,month)
{
	if(month<0 || month>11)
	{
		return 30;
	}
	var arrMon = new Array(12);
	arrMon[0] = 31;
	if(year % 4 == 0)
	{
		arrMon[ 1] =29;
	}else{
		arrMon[ 1] =28;
	}	
	arrMon[ 2] = 31;	arrMon[ 3] = 30;
	arrMon[ 4] = 31;	arrMon[ 5] = 30;
	arrMon[ 6] = 31;	arrMon[ 7] = 31;
	arrMon[ 8] = 30;	arrMon[ 9] = 31;
	arrMon[10] = 30;	arrMon[11] = 31;	
	return arrMon[month];
}

/**
 * 以document.write的方式向页面中写入js
 * 参数 : 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -