1. 程式人生 > >javascript 常用函式(二)

javascript 常用函式(二)

/***javascript 常用函式**/
function
each( object, callback ) { if ( undefined === object.length ){ for ( var name in object ) { if (false === callback( object[name], name, object )) break; } } else { for ( var i = 0, len = object.length; i < len; i++ ) {
if (i in object) { if (false === callback( object[i], i, object )) break; } } } } //過濾空白文字節點 function filterSpaceNode(nodes) {掉 var ret=[]; for(var i=0;i<nodes.length;i++) { if (nodes[i].nodeType===3 && /^\s+$/.test(nodes[i].nodeValue)) {
continue; } ret.push(nodes[i]); } return ret; } function addClassName(obj,cn) { return obj.className += " " + cn; } function delClassName(obj,cn) { return obj.className = obj.className.replace(new RegExp("\\b"+cn+"\\b"),""); //同樣,多個className之間的多個空格也會被視為一個
} function hasClassName(obj,cn) { return (new RegExp("\\b"+cn+"\\b")).test(obj.className); } function placeNode(node,fn,__this) { fn.call(__this,frag(node)); return __this; } function append(node, newNode) { return placeNode(newNode,function (one) {node.appendChild(one)},node); } function preappend(node, newNode) { return placeNode(newNode,function (one) {node.insertBefore(one,node.firstChild)},node); } function before(node, newNode) { return placeNode(newNode,function (one) {node.parentNode.insertBefore(one,node)},node); } function after(node, newNode) { //如果node有下一個節點的話,newNode 插入到node.nextSibling的前面 //如果node沒有下一個節點,newNode插入為node.parentNode的最後一個子 if (node.nextSibling) { placeNode(newNode,function (one) {node.parentNode.insertBefore(one,node.nextSibling)},node); } else { placeNode(newNode,function (one) {node.parentNode.appendChild(one)},node); } return node; } //如果新節點是頁面中已經存在的則新節點原來的位置會消失 function replaceNode(newNode, node) { node.parentNode.replaceChild(newNode, node); } function delNode(node) { node.parentNode.removeChild(this); } function frag(nodes) { var tempFrag =document.createDocumentFragment(); if (nodes.nodeType) {nodes=[nodes];} /* 錯誤的寫法 傳入的是引用 each(nodes,function(node){ tempFrag.appendChild(node); })*/ for(var i=0;i<nodes.length;i++) { //克隆後不在是引用 var a = nodes[i].cloneNode(true); (function(node){ tempFrag.appendChild(node); })(a) } /* while(nodes.length>0) { tempFrag.appendChild(nodes[0]); alert(nodes.length); } */ return tempFrag; } //html轉換為物件 function html2Obj(html) { var div = document.createElement('div'); div.innerHTML = html; return div.firstChild; } //資料的本地化儲存,都相容 function makeWebStorage() { //ie用userdata實現,w3c瀏覽器本身支援 if (!("localStorage" in window)) { var store = { userData : null, name : location.hostname, init : function () { if (!store.userData) { try { store.userData = document.createElement('INPUT'); store.userData.type = "hidden"; store.userData.style.display = "none"; store.userData.addBehavior("#default#userData"); document.body.appendChild(store.userData); var expires = new Date(); expires.setDate(expires.getDate() + 365); store.userData.expires = expires.toUTCString(); } catch (e) { return false; } } return true; }, setItem : function (key, value) { if (store.init()) { store.userData.load(store.name); store.userData.setAttribute(key, value); store.userData.save(store.name); } }, getItem : function (key) { if (store.init()) { store.userData.load(store.name); return store.userData.getAttribute(key) } }, remove : function (key) { if (store.init()) { store.userData.load(store.name); store.userData.removeAttribute(key); store.userData.save(store.name); } } }; }else{ store = { set:function(key, value){localStorage.setItem(key, value)}, get:function(key){return localStorage.getItem(key)}, remove:function(key){return localStorage.removeItem(key)} } } window.webStorage = store; } /** * 記錄函式呼叫的次數 */ function invokeTimes(){ if(arguments.callee.times == undefined) { arguments.callee.times = 0; } arguments.callee.times ++; console.log(arguments.callee.times); } document.body.onclick = function(){ invokeTimes(); } //變數定義 效果同php中的define函式 function define (name, value) { // Define a new constant // // version: 903.3016 // discuss at: http://phpjs.org/functions/define // + original by: Paulo Freitas // + revised by: Andrea Giammarchi (http://webreflection.blogspot.com) // + reimplemented by: Brett Zamir (http://brett-zamir.me) // * example 1: define('IMAGINARY_CONSTANT1', 'imaginary_value1'); // * results 1: IMAGINARY_CONSTANT1 === 'imaginary_value1' var defn, replace, script, that = this, d = this.window.document; var toString = function (name, value) { return 'const ' + name + '=' + (/^(null|true|false|(\+|\-)?\d+(\.\d+)?)$/.test(value = String(value)) ? value : '"' + replace(value) + '"'); }; try { eval('const e=1'); replace = function (value) { var replace = { "\x08": "b", "\x0A": "\\n", "\x0B": "v", "\x0C": "f", "\x0D": "\\r", '"': '"', "\\": "\\" }; return value.replace(/\x08|[\x0A-\x0D]|"|\\/g, function (value) { return "\\" + replace[value]; }); }; defn = function (name, value) { if (d.createElementNS) { script = d.createElementNS('http://www.w3.org/1999/xhtml', 'script'); } else { script = d.createElement('script'); } script.type = 'text/javascript'; script.appendChild(d.createTextNode(toString(name, value))); d.documentElement.appendChild(script); d.documentElement.removeChild(script); }; } catch (e) { replace = function (value) { var replace = { "\x0A": "\\n", "\x0D": "\\r" }; return value.replace(/"/g, '""').replace(/\n|\r/g, function (value) { return replace[value]; }); }; defn = (this.execScript ? function (name, value) { that.execScript(toString(name, value), 'VBScript'); } : function (name, value) { eval(toString(name, value).substring(6)); }); } defn(name, value); } /** * 根據類名獲取元素 * * @param className * @param context * @returns */ function getByClassName(className,context) { context=context || document; if (context.getElementsByClassName) { return context.getElementsByClassName(className); } var nodes=context.getElementsByTagName('*'),ret=[]; for (var i=0;i<nodes.length;i++) { if (nodes[i].nodeType == 1 && nodes[i].className.indexOf(className) != -1) { ret.push(nodes[i]); } } return ret; } /** * Registers a callback for DOM ready. If DOM is already ready, the * callback is called immediately. * @param {Function} Array callback */ function domReady(callback) { var isTop, testDiv, scrollIntervalId, isPageLoaded = false, doc = document, readyCalls = []; function runCallbacks(callbacks) { var i; for (i = 0; i < callbacks.length; i += 1) { callbacks[i](doc); } } function callReady() { var callbacks = readyCalls; if (isPageLoaded) { //Call the DOM ready callbacks if (callbacks.length) { readyCalls = []; runCallbacks(callbacks); } } } /** * Sets the page as loaded. */ function pageLoaded() { if (!isPageLoaded) { isPageLoaded = true; if (scrollIntervalId) { clearInterval(scrollIntervalId); } callReady(); } } if (document.addEventListener) { //Standards. Hooray! Assumption here that if standards based, //it knows about DOMContentLoaded. document.addEventListener("DOMContentLoaded", pageLoaded, false); window.addEventListener("load", pageLoaded, false); } else if (window.attachEvent) { window.attachEvent("onload", pageLoaded); testDiv = document.createElement('div'); try { isTop = window.frameElement === null; } catch (e) {} //DOMContentLoaded approximation that uses a doScroll, as found by //Diego Perini: http://javascript.nwbox.com/IEContentLoaded/, //but modified by other contributors, including jdalton if (testDiv.doScroll && isTop && window.external) { scrollIntervalId = setInterval(function () { try { testDiv.doScroll(); pageLoaded(); } catch (e) {} }, 1); } } //Check if document already complete, and if so, just trigger page load //listeners. Latest webkit browsers also use "interactive", and //will fire the onDOMContentLoaded before "interactive" but not after //entering "interactive" or "complete". More details: //http://dev.w3.org/html5/spec/the-end.html#the-end //http://stackoverflow.com/questions/3665561/document-readystate-of-interactive-vs-ondomcontentloaded //Hmm, this is more complicated on further use, see "firing too early" //bug: https://github.com/requirejs/domReady/issues/1 //so removing the || document.readyState === "interactive" test. //There is still a window.onload binding that should get fired if //DOMContentLoaded is missed. if (document.readyState === "complete") { pageLoaded(); } if (isPageLoaded) {//dom已經ready callback(doc); } else { readyCalls.push(callback); } } domReady(function(){ alert('domload'); alert(document.getElementById('container')); }) //改變某個函式的內部this指標 function closure(fn, scope) { return function (){ fn.apply(scope, arguments); }; } //呼叫某個物件的某個函式,並將次物件作為方法的作用域 function invoke(obj, methodName) { return function(){ obj.methodName.apply(obj, arguments); }; } // 元素資料快取 (function(){ var cache = [0],expando = 'data' + +new Date(); function data(elem) { var cacheIndex = elem[expando], nextCacheIndex = cache.length; if(!cacheIndex) { cacheIndex = elem[expando] = nextCacheIndex; cache[cacheIndex] = {}; } return { get : function(key) { if(typeof key === 'string') { return cache[cacheIndex] ? cache[cacheIndex][key] : null; } return cache[cacheIndex] ? cache[cacheIndex] : null; }, set : function(key, val) { cache[cacheIndex][key] = val; return data(elem); }, remove : function(key){ if(cache[cacheIndex]) { return cache.splice(cacheIndex,1); } } } } window.data = data; })(); //js請求xml檔案, if (window.ActiveXObject) { //IE var getXMLDOM=function () { return new ActiveXObject("Microsoft.XmlDom"); },loadXMLFile=function (xmlDom,url,callback) { xmlDom.onreadystatechange=function () { if (xmlDom.readyState===4) { if (xmlDom.parseError.errorCode===0) { callback.call(xmlDom); } else { throw new Error("XML Parse Error:"+xmlDom.parseError.reason); } } }; xmlDom.load(url); return xmlDom; },loadXMLString=function (xmlDom,s) { xmlDom.loadXML(s); if (xmlDom.parseError.errorCode!==0) { throw new Error("XML Parse Error:"+xmlDom.parseError.reason); } return xmlDom; }, getXML=function (xmlNode) { return xmlNode.xml; }; }else if (document.implementation && document.implementation.createDocument) { //W3C var getXMLDOM=function () {//獲取一個XMLDOM物件 return document.implementation.createDocument("","",null); }, loadXMLFile=function (xmlDom,url,callback) { if (xmlDom.async===true) { xmlDom.onload=function () { if (xmlDom.documentElement.nodeName=="parsererror") { throw new Error("XML Parse Error:"+xmlDom.documentElement.firstChild.nodeValue); } else { callback.call(xmlDom); } }; } console.dir(xmlDom); xmlDom.load(url); return xmlDom; }, loadXMLString=function (xmlDom,s) { var p = new DOMParser(); var newDom=p.parseFromString(s,"text/xml"); if (newDom.documentElement.nodeName=="parsererror") { throw new Error("XML Parse Error:"+newDom.documentElement.firstChild.nodeValue); } while (xmlDom.firstChild) { xmlDom.removeChild(xmlDom.firstChild); } for (var i=0,n;i<newDom.childNodes.length;i++) { n=xmlDom.importNode(newDom.childNodes[i],true); //importNode用於把其它文件中的節點匯入到當前文件中 //true引數同時匯入子節點 xmlDom.appendChild(n); } return xmlDom; }, getXML=function (xmlNode) { var s= new XMLSerializer(); return s.serializeToString(xmlNode,"text/xml"); }; } var xmldom = getXMLDOM(); loadXMLFile(xmldom,"/xml.php",function () { alert(this); }); /** args { url method 預設值為get success Function data {key:value} cache Boolean true表示快取,預設值為false datatype 預設 text text|xml } */ function ajax(args) { //建立xhr物件 function createXHR() { return window.XMLHttpRequest? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");//IE6 } //拼接引數 function params(o) { var a=[]; for (var i in o) { a.push(encodeURIComponent(i)+"="+encodeURIComponent(o[i])); } return a.join("&"); } var xhr = createXHR(); args.method=args.method || "get"; if (!args.cache) { args.data.cache = (new Date()*1); } var data_str = params(args.data) if (/get/i.test(args.method) && data_str) { args.url += args.url.indexOf("?")<0 ? '?' : '&'; args.url += data_str; } xhr.open(args.method,args.url,true); xhr.onreadystatechange=function () { if (xhr.readyState===4 && xhr.status===200) { if(!args.datatype || args.datatype.toLowerCase() === 'text') { args.success(xhr.responseText); }else{ args.success(xhr.responseXML); } } }; if (/post/i.test(args.method)) { xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xhr.send(data); } else { xhr.send(); } } ajax({ url:"/xml.php", method:'post', success:function(xmldom){ alert(xmldom.nodeName); }, data:{id:1}, datatype:'xml' }) //計算陣列中的最大值 Array.prototype.max = function(){ return Math.max.apply({},this) } //計算陣列中的最小值 Array.prototype.min = function(){ return Math.min.apply({},this) } //複製陣列 Array.prototype.copy = function() { return [].concat(this); }; //去除陣列中只指定元素,只能去除一個,如果想多個,之前先用unique處理 Array.prototype.remove = function(value){ for(var i=0,len=this.length;i<len;i++) { if(this[i]==value){ this.splice(i, 1); break; } } return this; } //去除陣列中只指定元素,只能去除一個,如果想多個,之前先用unique處理 Array.prototype.inArray = function(value){ var index = -1; each(this,function(v,k){ if(v == value){ index = k; return false; } }) return index; } //去除陣列中的重複元素 Array.prototype.unique = function(){ var rst = []; each(this, function(v,k){ if(rst.inArray(v)<0) rst.push(v); }) return rst; } String.prototype.repeat=function(n){return new Array(n+1).join(this);} String.prototype.ltrim=function(){return this.replace(/^\s*/, "");} String.prototype.rtrim=function(){return this.replace(/\s*$/, "");} String.prototype.trim=function(){return this.rtrim().ltrim();} //非ascii字元 String.prototype.hasChinese=function(){return /[^\u00-\uff]/g.test(this);} //包括中英韓文,這三種語言裡面有更多共同的 String.prototype.onlyChinese=function(){return /^[\u0391-\u9FBF]+$/g.test(this);} //取得字串實際長度(漢字算兩個位元組,英文字母算一個位元組) \x代表ascii碼,會按unicode碼進行匹配 String.prototype.bytes=function(){ return this.replace(/[^\x00-\xff]/gi,'xx').length;} Number.prototype.inter=function (a,b) {//檢測數字是否在區間之內 var min=Math.min(a,b),max=Math.max(a,b); return this==a || this==b || (Math.max(this,min)==this && Math.min(this,max)==this); };   

相關推薦

javascript 常用函式()

/***javascript 常用函式**/function each( object, callback ) { if ( undefined === object.length ){ for ( var name in object ) {

DB2常用函式:型別轉換函式

CAST表示式用來轉換型別使用 Sql程式碼    SELECT CAST(CURRENT TIME AS CHAR(8) )&nb

JavaScript常用函式總結

 最近正在學習js語法,講到函式這一塊內容,感覺有些細節還是挺有用的,所以發文總結一下。      javascript這門語言本身就是一種弱型別語言,它不和像java, c ,c#等等這些語言一樣,在宣告變數和方法的時候不需要對齊進行指定資料型別的修飾,

JavaScript常用函式

對字串操作的函式 var str = "A basket of big turnips."; 替換字元-replace() 輸入: var str = str.replace(/b/g,"BXX")  輸出:A BXXasket of BXXig turnips.

javascript 常用函式(一)

部分也是自己常用的,但是部分還需要實際驗證 1、Array型別函式: array.concat(item…) 函式功能:關聯陣列,實現陣列相加功能,但並不影響原先陣列,concat返回新陣列。 JS常用的標準函式 array.join(separator) 函式功能:將array中的每

matlab中的常用函式()

整數型別資料的運算函式 一、bitshift 函式 bitshift函式實現資料位移操作。bitshift(A,B)函式第二個引數為正,則對A的二進位制數左移。第二個引數為負,則右移。bitshift(A,n,N),N表示移位後的資料最多隻有N為,若超過N位,多餘的位將被丟

javascript常用操作()

var IT script func 檢測 用法 def 需要 urn Undefined 不是 Null 在 JavaScript 中, null 用於對象, undefined 用於變量,屬性和方法。 對象只有被定義才有可能為 null,否則為 undefined。 如

javascript常用方法函式收集

獲取設定css樣式 /* el, 獲取樣式的元素 attr, 對應的樣式 value 對應的值 */ function css(el,attr,val){ if(val === undefined){//如果val沒有傳,說明想要獲取樣式

mysql學習常用函式

字串函式   mysql> select concat('aaa','bbb','ccc'); +---------------------------+ | concat('aaa','bbb','ccc') | +---------------------

Numpy入門()Numpy常用函式

常用函式 1 檔案讀寫 import numpy as np i2 = np.eye(2) i2 array([[1., 0.], [0., 1.]]) i2.dtype dtype('float64') np.s

mysql學習()常用函式

字串函式 mysql> select concat('aaa','bbb','ccc'); +---------------------------+ | concat('aaa','bbb','ccc') | +------

JavaScript基礎回顧之函式()

匿名函式 (函式沒有名稱) 函式儲存在變數中,不需要函式名稱,通常通過變數名來呼叫。: 例項 var x = function (a, b) {return a * b}; var z = x(4, 3); Function() 建構函式 通過關鍵字 f

Hive常用函式大全()(視窗函式、分析函式、增強group)

視窗函式與分析函式 應用場景: (1)用於分割槽排序 (2)動態Group By (3)Top N (4)累計計算 (5)層次查詢 視窗函式 FIRST_VALUE:取分組內排序後,截止到當前行,第一個值 LAST_VALUE: 取分組內排序後,截止到當前行,最

javascript 與後端互動常用函式梳理

1.splice()    方法用於插入、刪除或替換陣列的元素    city_list是個陣列 $(document).on('click','.del',function(){ // console.log($(this).index())

NumPy學習指南 學習筆記(常用函式

1.  檔案讀寫 通常情況下,資料是以檔案形式儲存的。學會讀寫檔案是深入學習Numpy的基礎。 1.1 建立單位矩陣,並存入txt檔案i2 = np.eye(2) i2 Out[84]: array([[ 1., 0.], [ 0., 1.]]) 使用s

JavaScript基礎函式和詞法分析以及常用的內建物件和使用方法(4)

day52 參考:https://www.cnblogs.com/liwenzhou/p/8004649.html 函式 函式定義 JavaScript中的函式和Python中的非常類似,只是定義方式有點區別。 function foo(a, b) { console.log("a:"

oracle常用函式)---日期函式

<div>作者:<a target=_blank href="http://www.cnblogs.com/kerrycode/" target="_blank">瀟湘隱者</a></div><div>出處:<

JavaScript封閉函式常用內建物件、js除錯方法

1.封閉函式 封閉函式是JavaScript中匿名函式的另外一種寫法,建立一個一開始就執行而不用命名的函式 /在封閉函式前加’;‘,可以避免js壓縮時出錯/;(function(){ alert('hello world!'); })(); /*當i大於78時等於78,小於時等於89*/ v

我自己的Javascript 庫,封裝了一些常用函式

/** @ Name : Kingwell Javascript Library @ Author :kingwell @ Date : 2012-8-22 @ Email : jinhua.leng##gmail.com

javascript常用資料驗證函式

正則表示式日期驗證函式 function CheckDate(str){       //在JavaScript中,正則表示式只能使用"/"開頭和結束,不能使用雙引號        var Expression=/^((((1[6-9]|[2-9]\d)\d{2})(\/