十個最常用的javascript自定義函數(2)

(7)inArray()

用於判斷檢查數組中是否存在某個值,下面方法取自Prototype類庫。

  1. Array.prototype.inArray = function (value) {
  2.     for (var i=0,l = this.length ; i <l ; i++) {
  3.         if (this[i] === value) {
  4.             return true;
  5.         }
  6.     }
  7.     return false;
  8. };

另一個版本:

  1. var inArray = function (arr,value) {
  2.     for (var i=0,l = arr.length ; i <l ; i++) {
  3.         if (arr[i] === value) {
  4.             return true;
  5.         }
  6.     }
  7.     return false;
  8. };

(8) getCookie(), setCookie(), deleteCookie()

做BBS與商業網站的應該經常用到,無理由每次都要讓用戶輸入密碼登錄吧。我們需要藉助cookie實現自動登錄功能。

  1. function getCookie( name ) {
  2.     var start = document.cookie.indexOf( name + "=" );
  3.     var len = start + name.length + 1;
  4.     if ( ( !start ) && ( name != document.cookie.substring( 0name.length ) ) ) {
  5.         return null;
  6.     }
  7.     if ( start == -1 ) return null;
  8.     var end = document.cookie.indexOf( ;len );
  9.     if ( end == -1 ) end = document.cookie.length;
  10.     return unescape( document.cookie.substring( lenend ) );
  11. }
  12. function setCookie( namevalueexpirespathdomainsecure ) {
  13.     var today = new Date();
  14.     today.setTime( today.getTime() );
  15.     if ( expires ) {
  16.         expires = expires * 1000 * 60 * 60 * 24;
  17.     }
  18.     var expires_date = new Date( today.getTime() + (expires) );
  19.     document.cookie = name+=+escape( value ) +
  20.         ( ( expires ) ? ;expires=+expires_date.toGMTString() :  ) + //expires.toGMTString()
  21.         ( ( path ) ? ;path= + path :  ) +
  22.         ( ( domain ) ? ;domain= + domain :  ) +
  23.         ( ( secure ) ? ;secure :  );
  24. }
  25. function deleteCookie( namepathdomain ) {
  26.     if ( getCookie( name ) ) document.cookie = name + = +
  27.             ( ( path ) ? ;path= + path : ) +
  28.             ( ( domain ) ? ;domain= + domain :  ) +
  29.             ;expires=Thu, 01-Jan-1970 00:00:01 GMT;
  30. }

(9)getStyle()與setStyle()

所有UI控件都應該存在的函數,動態設置樣式與獲取樣式。這個可以寫得很短,也可以寫得很長,但要精確取得樣式,一個字:難!但我發現許多問題都是發端於IE,微軟的開發人員好像從來不打算給出getComputedStyle這樣的函數,與之相近的currentStyle會返回auto,inhert, ‘ ‘等讓你哭笑不得的值,這還沒有算上IE怪癖模式帶來的難度呢!各類庫的實現是非常長與難分離出來的,下面是我實現的版本:

  1. function setStyle(el,prop,value){
  2.     if(prop == "opacity" && !+"\v1"){
  3.       //IE7 bug:filter 濾鏡要求 hasLayout=true 方可執行(否則沒有效果)
  4.       if (!el.currentStyle || !el.currentStyle.hasLayout) el.style.zoom = 1;
  5.       prop = "filter";
  6.       if(!!window.XDomainRequest){
  7.         value ="progid:DXImageTransform.Microsoft.Alpha(style=0,opacity="+value*100+")";
  8.       }else{
  9.         value ="alpha(opacity="+value*100+")"
  10.       }
  11.     }
  12.     el.style.cssText += ; + (prop+":"+value);
  13.   }
  14.  
  15.   function getStyle(elstyle){
  16.     if(!+"\v1"){
  17.       style = style.replace(/\-(\w)/gfunction(allletter){
  18.         return letter.toUpperCase();
  19.       });
  20.       return el.currentStyle[style];
  21.     }else{
  22.       return document.defaultView.getComputedStyle(elnull).getPropertyValue(style)
  23.     }
  24.   }

有關setStyle還可以看我另一篇博文,畢竟現在設置的樣式都是內聯樣式,與html混雜在一起。

(10)$()

實至名歸,最值錢的函數,可以節省多少流量啊。最先由Prototype.js實現的,那是洪荒時代遺留下來的珍獸,現在有許多變種。

  1. function $() {
  2.     var elements = [];
  3.     for (var i = 0i &ltarguments.lengthi++) {
  4.         var element = arguments[i];
  5.         if (typeof element == string)
  6.             element = document.getElementById(element);
  7.         if (arguments.length == 1)
  8.             return element;
  9.         elements.push(element);
  10.     }
  11.     return elements;
  12. }

十個最常用的javascript自定義函數(1):

http://blog.csdn.net/d19891006/article/details/6938887

原文地址:http://www.cnblogs.com/rubylouvre/archive/2009/09/02/1558998.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章