1. 程式人生 > >javascript常用方法函式收集

javascript常用方法函式收集

獲取設定css樣式

/*
    el, 獲取樣式的元素
    attr, 對應的樣式
    value 對應的值
*/
function css(el,attr,val){
    if(val === undefined){//如果val沒有傳,說明想要獲取樣式
        return el.currentStyle?parseFloat(el.currentStyle[attr]):parseFloat(getComputedStyle(el)[attr]);
    }  
    // 沒有走就說明想要設定樣式
    switch(attr){
        case
"opacity": el.style.filter = "alpha(opacity="+(val*100)+")"; case "zIndex": el.style[attr] = val; break; default: el.style[attr] = val + "px"; } }

字串長度擷取

function cutstr(str,len){
	var temp,
	icount = 0,
	patrn = /[^\x00-\xff],
	strre = ""
; for(var i = 0;i<str.length;i++){ if(icount < len -1){ temp = str.substr(i,1); if(patrn.exec(temp) == null ){ icount = icount + 1 }else{ icount = icount + 2 } strre += temp }else{ break ; } } return strre + "..." }

替換全部

String.prototype.replaceAll = function
(s1,s2){ return this.replace(new RegExp(s1,"gn"),s2) }

清空左空格/右空格

function ltrim(s){return s.replace(/^(\s| *)/,"");}
function ltrim(s){return s.replace(/(\s*| *)$/,"");}

判斷是否以某個字串開頭

String.prototype.startWith = function(s){
	return this.indexOf(s) == 0
}

判斷是否以某個字串結束

String.prototype.endWith = function(s){
	var d = this.length - s.length;
	return (d >=0 && this.lastIndexOf(s) == d)
}

轉義html標籤

function HtmlEncode (text){
	return text.replace(/&/g,'&').replace(/\"/g'"').replace(/</g,'<').replace(/>/g,'>')
}

時間日期轉換格式

Date.prototype.Format = function(formatStr) {
    var str = formatStr;
    var Week = ['日', '一', '二', '三', '四', '五', '六'];
    str = str.replace(/yyyy|YYYY/, this.getFullYear());
    str = str.replace(/yy|YY/, (this.getYear() % 100) > 9 ? (this.getYear() % 100).toString() : '0' + (this.getYear() % 100));
    str = str.replace(/MM/, (this.getMonth() + 1) > 9 ? (this.getMonth() + 1).toString() : '0' + (this.getMonth() + 1));
    str = str.replace(/M/g, (this.getMonth() + 1));
    str = str.replace(/w|W/g, Week[this.getDay()]);
    str = str.replace(/dd|DD/, this.getDate() > 9 ? this.getDate().toString() : '0' + this.getDate());
    str = str.replace(/d|D/g, this.getDate());
    str = str.replace(/hh|HH/, this.getHours() > 9 ? this.getHours().toString() : '0' + this.getHours());
    str = str.replace(/h|H/g, this.getHours());
    str = str.replace(/mm/, this.getMinutes() > 9 ? this.getMinutes().toString() : '0' + this.getMinutes());
    str = str.replace(/m/g, this.getMinutes());
    str = str.replace(/ss|SS/, this.getSeconds() > 9 ? this.getSeconds().toString() : '0' + this.getSeconds());
    str = str.replace(/s|S/g, this.getSeconds());
    return str
}

判斷是否為數字型別

function isDigit(value){
	var patrn = /^[0-9]*$/;
	if(patrn.exec(value) == null|| value ==""){
		return false
	}else{
		return true
	}
}

設定coockie值

function setCookie(name, value, Hours) {
    var d = new Date();
    var offset = 8;
    var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
    var nd = utc + (3600000 * offset);
    var exp = new Date(nd);
    exp.setTime(exp.getTime() + Hours * 60 * 60 * 1000);
    document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString() + ";domain=360doc.com;"
}

獲取cookie值

function getCookie(name) {
    var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
    if (arr != null) return unescape(arr[2]);
    return null
}

加入收藏夾

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() {
    if (document.all) {
    	document.body.style.behavior = 'url(#default#homepage)';
    	document.body.setHomePage('http://w3cboy.com')
    } 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', 'http://w3cboy.com')
    }
}

載入樣式檔案

function LoadStyle(url) {
    try {
    	document.createStyleSheet(url)
    } catch(e) {
    	var cssLink = document.createElement('link');
    	cssLink.rel = 'stylesheet';
    	cssLink.type = 'text/css';
    	cssLink.href = url;
    	var head = document.getElementsByTagName('head')[0];
    	head.appendChild(cssLink)
    }
}

返回指令碼內容

function evalscript(s) {
    if(s.indexOf('<script') == -1) return s;
    var p = /<script[^\>]*?>([^\x00]*?)<\/script>/ig;
    var arr = [];
    while(arr = p.exec(s)) {
    	var p1 = /<script[^\>]*?src=\"([^\>]*?)\"[^\>]*?(reload=\"1\")?(?:charset=\"([\w\-]+?)\")?><\/script>/i;
    	var arr1 = [];
	    arr1 = p1.exec(arr[0]);
	    if(arr1) {
	    	appendscript(arr1[1], '', arr1[2], arr1[3]);
	    } else {
		    p1 = /<script(.*?)>([^\x00]+?)<\/script>/i;
		    arr1 = p1.exec(arr[0]);
		    appendscript('', arr1[2], arr1[1].indexOf('reload=') != -1);
	    }
    }
    return s;
    }

}

清除指令碼內容

function stripscript(s) {
    return s.replace(/<script.*?>.*?<\/script>/ig, '');
}

動態載入指令碼檔案

function appendscript(src, text, reload, charset) {
    var id = hash(src + text);
    if(!reload && in_array(id, evalscripts)) return;
    if(reload && $(id)) {
    	$(id).parentNode.removeChild($(id));
    }
    evalscripts.push(id);
    var scriptNode = document.createElement("script");
    scriptNode.type = "text/javascript";
    scriptNode.id = id;
    scriptNode.charset = charset ? charset : (BROWSER.firefox ? document.characterSet : document.charset);
    try {
	if(src) {
	    scriptNode.src = src;
	    scriptNode.onloadDone = false;
	    scriptNode.onload = function () {
	    scriptNode.onloadDone = true;
	    JSLOADED[src] = 1;
	};
	scriptNode.onreadystatechange = function () {
		if((scriptNode.readyState == 'loaded' || scriptNode.readyState == 'complete') && !scriptNode.onloadDone) {
		    scriptNode.onloadDone = true;
		    JSLOADED[src] = 1;
	        }
    	};
    } else if(text){
    	scriptNode.text = text;
    }
    	document.getElementsByTagName('head')[0].appendChild(scriptNode);
    } catch(e) {}
}

返回按ID檢索的元素物件

function $(id) {
    return !id ? null : document.getElementById(id);
}

跨瀏覽器繫結事件

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;
    }
}

為元素新增on方法

Element.prototype.on = Element.prototype.addEventListener;
    NodeList.prototype.on = function (event, fn) {[]['forEach'].call(this, function (el) {
    	el.on(event, fn);
    });
    return this;
};

為元素新增trigger方法

Element.prototype.trigger = function (type, data) {
    var event = document.createEvent('HTMLEvents');
    event.initEvent(type, true, true);
    event.data = data || {};
    event.eventName = type;
    event.target = this;
    this.dispatchEvent(event);
    return this;
};
NodeList.prototype.trigger = function (event) {
    []<