X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=0.6.x%2Fjs%2F01_dom%2F17_XDomNodeList.js;fp=0.6.x%2Fjs%2F01_dom%2F17_XDomNodeList.js;h=d55d60ba5193fb3ba07f1892768d860b26e21198;hb=27420d0fbdf56a5cda68f5b10de6565de8a5c010;hp=0000000000000000000000000000000000000000;hpb=fb2a4b2dace3975474be1daa56659a861bbcbfbe;p=pettanr%2FclientJs.git diff --git a/0.6.x/js/01_dom/17_XDomNodeList.js b/0.6.x/js/01_dom/17_XDomNodeList.js new file mode 100644 index 0000000..d55d60b --- /dev/null +++ b/0.6.x/js/01_dom/17_XDomNodeList.js @@ -0,0 +1,63 @@ + +X.Dom.NodeList = function( v ){ + var args = [], + l = arguments.length, + i = 0, + indexOf, xnode, j, n = 0, skip; + for( ; i < l; ++i ){ + //args.push( arguments[ i ] ); + args.push.apply( args, arguments[ i ] ); + }; + //alert( arguments[ 0 ].length + ' , ' + args.length ) + if( ( l = args.length ) === 1 ) return new X.Dom.Node( args[ 0 ] ); + if( !this || this.append !== X.Dom.NodeList.prototype.append ) return new X.Dom.NodeList( args ); + + for( i = 0; i < l; ++i ){ + xnode = args[ i ]; + //xnode = xnode && xnode.constructor === X.Dom.Node ? xnode : new X.Dom.Node( xnode ); + skip = false; + if( xnode._xnodeType === 0 ) continue; + for( j = 0; j < n; ++j ){ + if( this[ j ] === xnode ){ + skip = true; + break; + }; + }; + if( !skip ){ + this[ n ] = xnode; + n = ++this.length; + }; + }; +}; +X.Dom.NodeList.prototype.length = 0; + +X.Dom.NodeList.prototype.each = function( func ){ + var l = this.length, + i = 0; + for( i = 0, l = this.length; i < l; ++i ){ + if( func.call( this[ i ], i ) === false ) break; + }; + return this; +}; + +/* -------------------------------------- + * Fuction Base, multi, getter, setter, + */ +X.Dom.listenOnce( X.Dom.Event.DOM_PRE_INIT, function(){ + var target = X.Dom.NodeList.prototype, + src = X.Dom.Node.prototype, + p, v, multi; + for( p in src ){ + v = src[ p ]; + if( X.Type.isFunction( v ) && !target[ p ] ){ + target[ p ] = multi = new Function( [ + 'var a=arguments,f=X.Dom.Node.prototype.', p, ',t=this,i,l=t.length;', + 'if(l)', + 'for(i=0;i