OSDN Git Service

Fix the bug of X.NodeAnime.
[pettanr/clientJs.git] / 0.6.x / js / 02_dom / 07_XNodeList.js
1 \r
2 function X_NodeList( v ){\r
3         var args = [],\r
4                 l    = arguments.length,\r
5                 i    = 0,\r
6                 xnode, j, n = 0, skip;\r
7 \r
8         for( ; i < l; ++i ){\r
9                 args.push.apply( args, arguments[ i ] );\r
10         };\r
11 \r
12         if( ( l = args.length ) === 1 ) return new Node( args[ 0 ] );\r
13         if( !this || this[ 'append' ] !== X_NodeList.prototype[ 'append' ] ) return new X_NodeList( args );\r
14         \r
15         for( i = 0; i < l; ++i ){\r
16                 xnode = args[ i ];\r
17                 skip  = false;\r
18                 for( j = 0; j < n; ++j ){\r
19                         if( this[ j ] === xnode ){\r
20                                 skip = true;\r
21                                 break;\r
22                         };\r
23                 };\r
24                 if( !skip ){\r
25                         this[ n ] = xnode;\r
26                         n = ++this.length;\r
27                 };\r
28         };\r
29 };\r
30 X_NodeList.prototype.length = 0;\r
31 \r
32 X_NodeList.prototype[ 'each' ] = function( func /* opt_args... */ ){\r
33         var l = this.length,\r
34                 i = 0, args;\r
35 \r
36         if( 1 < arguments.length ){\r
37                 args = X_Array_copy( arguments );\r
38                 for( ; i < l; ++i ){\r
39                         args[ 0 ] = i;\r
40                         if( func.apply( this[ i ], args ) === false ) break;\r
41                 };\r
42         } else {\r
43                 for( ; i < l; ++i ){\r
44                         if( func.call( this[ i ], i ) === false ) break;\r
45                 };\r
46         };\r
47         return this;\r
48 };\r
49 \r
50 /* --------------------------------------\r
51  *  Fuction Base, multi, getter, setter,\r
52  */\r
53 X_TEMP.onSystemReady.push( function( sys ){\r
54         var target = X_NodeList.prototype,\r
55                 src    = Node.prototype,\r
56                 p, v;\r
57         for( p in src ){\r
58                 //if( X_EMPTY_OBJECT[ p ] ) continue;\r
59                 v = src[ p ];\r
60                 if( X_Type_isFunction( v ) && !target[ p ] ){\r
61                         target[ p ] = new Function( [\r
62                                 'var a=arguments,f=X.Node.prototype.', p, ',t=this,i,l=t.length;',\r
63                                 'if(l)',\r
64                                         'for(i=0;i<l;++i)',\r
65                                                 'if(i===l-1)return f.apply(t[i],a);',\r
66                                                 'else f.apply(t[i],a);',\r
67                                 'return f.apply(t,a)'\r
68                         ].join( '' ) );\r
69                 };\r
70         };\r
71 });\r
72 \r