十个最常用的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

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