javascript常用方法函式收集
阿新 • • 發佈:2018-11-10
獲取設定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) {
[]<