<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="http://feeds.qzone.qq.com/rss.xsl" version="1.0"?>
<rss version="2.0" xmlns:qz="http://qzone.qq.com">
<channel>
<title><![CDATA[⊕紫雨]]></title>
<description><![CDATA[287743295]]></description>
<link>http://287743295.qzone.qq.com</link>
<lastBuildDate>Fri, 27 Nov 2009 07:41:15 GMT</lastBuildDate>
<generator>Qzone</generator>
<language>zh-cn</language>
<copyright>Copyright (C), 2005-2008, Tencent Tech. Co., Ltd.</copyright>
<pubDate>Thu, 28 Aug 2008 08:45:19 GMT</pubDate>

<item>
<title><![CDATA[Mootools教程之基础篇（一）]]></title>
<link>http://287743295.qzone.qq.com/blog/1219913119</link>
<description><![CDATA[ <div style="text-align:center;">Mootools教程之基础篇（一）<br></div><br>    正如Mootools教程介绍那样，我们开始一起学习Mootools的基础。<br>     <br>    大家可以到官方网站<a href="http://www.mootools.net/" target="_blank"><span style="color:#3d7db3;line-height:1.8em;">http://www.mootools.net/</span><wbr /></a><wbr />去下载你需要的mootools 的javascript类库，它提供完整和压缩的版本，使用很简单，直接把它导入你的页面中即可。<br>     <br>    首先，Mootools不太适合Javascript初学者，不过没有关系，若您不是很熟悉javascript，我们这里会讲讲javascript基础。<br>     <br>    注意，我这里说的熟悉javascript不单单指熟悉javascript，而是要对DOM，HTML，CSS，还有prototype有一定的了解。<br>     <br>    javascript面向对象<br>    首先Javascript是基于面向对象的，但是不是完全面向对象，不想Java这样。在Javascript中，你可以把它看成“集合”和对象。它的原生对象有String、Date、Array、Boolean、Math、Object还有内置的事件等等。<br>     其中它的prototype可以实现面向对象的语义，好，我们这里点到为止，我们来讲讲会在mootools中用到了内容。<br>    1.数组<br>    我们和js脚本打交道的比较多的就是数组，数组我们可以采用集中形式，<br>    new方式：<br>    var array=new Array();<br>    集合方式：<br>    var array=[];<br>    他们属于数组对象，所以添加元素，均可以为array.push(),删除并返回数组的最后一个元素array.pop();删除并返回第一个元s素shelf()，其他方法可以参考<a href="http://www.w3school.com.cn/js/jsref_obj_array.asp" target="_blank"><span style="color:#3d7db3;line-height:1.8em;">http://www.w3school.com.cn/js/jsref_obj_array.asp</span><wbr /></a><wbr /><br>    2.对象<br>    Javascript和Java一样他们都有祖先类，那就是Object。这里我要说的是我们可以把任何变量产生对象类型<br>    var a=new Object();<br>    现在给说一下面向对象js。<br>    我们一般在原生javascript中这么定义一个对象<br>           var OOP=function()<br>           {<br>                 this.name='oop';<br>                 this.getName=function()<br>                 {<br>                       return this.name;<br>                 }<br>           }<br>           在getName方法中返回了oop的字符。<br>好，这里我们介绍一下Mootools中的定义方法：<br>在Mootools.js库中有个名为Class类，这里类中定义了一下方法用于定义、继承、实现类。<br><span style="font-size:16px;line-height:1.8em;"><br><span style="font-weight:bold"><wbr />Class类：</span><wbr /></span><wbr /><br><br>我们这里举一个例子：   <br>    <br>var BasicPerson = new Class({<br>          initialize: function(name, age){<br>            this.name = name;<br>            this.age = age;<br>          },<br>                       toString:function()<br>                       {<br>                             alert(&quot;BasicPerson's method : toString()!&quot;);<br>                       }                        <br>    });<br><br>其中initialize就是定义了构造函数，而我们看到上面的例子的构造函数则是一个匿名函数，其实他们原理都是一样的，javascript支持委派方法，也就是说函数指针可以指向另外一个函数，这个函数是可实名或匿名函数。<br><br>继承，ClassName.extend()方法：<br><br>var Person = BasicPerson.extend();<br><br>在Person实例变量中我们可以调用toString()方法，它继承于父类BasicPerson。<br>修改方法，ClassName.Implement()方法：<br>Person.implement({<br>                       setName: function(name)<br>                       {<br>                             this.name=name;<br>                       },<br>                       setAge: function(age)<br>                       {<br>                             this.age=age;<br>           }<br>});<br>我们这里增添了两个方法，所有Person实例可以调用这两方法。<br><br>除此之外，mootools还对一些javascritpt原生对象进行了扩展。他们定在Native类中，应该叫做package（或者namespacing）。<br><br>前面说过的Array对象，mootools对Array进行扩展。<br><br>也就说只要定义数组，无论其形式，都做了Array对象进行处理，即可以调用mootools扩展Array对象的方法。 <!--v:3.2--> ]]></description>
<category><![CDATA[个人日记]]></category>
<author><![CDATA[287743295@qq.com(⊕紫雨)]]></author>
<comments>http://287743295.qzone.qq.com/blog/1219913119#comment</comments>
<qz:effect>512</qz:effect>
<pubDate>Thu, 28 Aug 2008 08:45:19 GMT</pubDate>
<guid>http://287743295.qzone.qq.com/blog/1219913119</guid>
</item>

<item>
<title><![CDATA[mootools5]]></title>
<link>http://287743295.qzone.qq.com/blog/1219111758</link>
<description><![CDATA[mootools【十一】- 多彩的开始 <br>        mootools中集成了一些非常好用的界面组件， 也提供了非常好用的界面效果工具类，用这些工具做界面效果，感觉上比用Prototype+Scriptaculous开发更方便，效果也更加的顺畅平滑。<br>       mootools的界面库Moo.Fx的设计十分的讲究OO原则，通过对提供了基本功能的基类的继承，扩展出了不同功能的工具类和组件类。Fx.Base就是这样一个基础类，它本身实现了Events,Chain,Options三个类，它包含了界面效果的最基本的动作和属性：<br>构造方法的可选属性：<br>------------------------------------------------------------------------------------------------------------------------------<br>onStart           - 效果开始前执行的方法，默认是一个空的function。你可以指定你的function。<br>onComplete - 完成效果后执行的方法，默认是一个空的function。你可以指定你的function。<br>onCancel      -  中断效果后执行的方法，默认是一个空的function。你可以指定你的function。<br>transition       - 效果的过渡变换所使用的方程，用来描述效果的变化规律。你可以在Fx.Transitions类中找到其他的方程，默认使用的是Fx.Transitions.sineInOut(即正弦)<br>duration         - 变化频率，毫秒。默认为500。<br>unit                 - 变化量的单位。默认是'px',你可以指定如'em','%'之类。<br>wait                - true/false。指定在执行下一个过渡效果之前是否等待当前的过渡效果执行结束。默认为true<br>fps                 - 帧频。即每秒所执行的变换次数。默认为30帧/秒。<br>------------------------------------------------------------------------------------------------------------------------------<br>方法：set<br>作用：不经过过渡变换效果，直接设置为指定的值<br> var myFx = new Fx.Style('myElement', 'opacity').set(0);<br>方法：start<br>作用：执行效果，让指定的开始值过渡变换到指定的结束值<br> var myFx = new Fx.Style('myElement', 'opacity').start(0,1);<br>方法：stop<br>作用：中断效果的执行，如果指定了参数为false,则会执行onCancel指定的方法。<br> <br>最后，如果要查看有哪些变换方程可以选用，可以看Fx.Transitions.js里的Fx.Transitions类，里面提供了非常之多的变换方程，具体的效果差别，自己去一个个去试试看吧。<br> <br> <br>  mootools【十二】- 多彩的开始2 <br>         这些天有点事情比较忙，几天没更新了Blog了。不能让这个mootools的学习文章半途而废了。<br>       上回说到mootools的Fx.Base类，它是mootools效果库Fx的基础，而我们平时会使用最频繁的，就是Fx.Style类，它是直接继承了Fx.Base类的。这个效果类非常强大，基本上可以实现对CSS样式中任何一个属性的过渡变换。<br>       Fx.Base中提供的方法在Fx.Style中都能用，用法是相同的，其他扩展的方法如下：<br>方法：hide<br>作用：如同调用Fx.Base的set方法，并且参数为0（即set(0)）,当效果作用在opacity,或者width,height(overflow需要是hidden)的时候,调用这个方法的效果是隐藏元素。<br>  var myFx = $('myDiv').effect('width', {duration: 1000});<br> myFx.hide();<br><br>方法：start<br>作用：在两个区间之间进行过渡变换，和Fx.Base的start用法一样。<br>  var marginChange = new Fx.Style('myElement', 'margin-top', {duration:500});<br> marginChange.start(10);     //从myElement当前的margin-top值过渡到10<br>   marginChange.start(1,20);  //myElement的margin-top值从1过渡到20<br><br>由于Fx.Style的引入，Element又被扩展了一个实现效果的快捷方法： effect<br>具体用法如下：<br>  var myEffect = $('myElement').effect('height', {duration: 1000, transition: Fx.Transitions.linear});<br> myEffect.start(10, 100);<br> <br> <br> <br>想实现同时进行多个效果怎么做？方便，Fx.Styles就是提供这样功能的一个类，它也是直接继承了Fx.Base的类，你可以像这样来使用它：<br>  var myFx = new Fx.Styles('myDiv', {duration: 1000});<br>  myFx.start({<br>     'width':[100,300],<br>     'height':[100,200]<br> });<br>十分简单明了。<br>同样，Effect由此多了一个effects快捷方法，可以这样使用：<br>  var myFxs= $(myElement).effects({duration: 1000, transition: Fx.Transitions.sineInOut});<br>  myFxs.start({<br>     'height': [10, 100], <br>     'width': [900, 300]<br> });<br> <br><br>另外，除了上面的两个类之外，还有一个可以用来作转换效果的类：Fx.Elements，这个类可以按照指定的元素顺序来执行指定的效果，就像这样：<br> var myElementsEffects = new Fx.Elements($$('a'));<br>  myElementsEffects.start({<br>         '0': {                                 //对第一个元素执行opacity和width的过渡变化<br>         'opacity': [0,1],<br>          width': [100,200]<br>     },<br>      '1': {                               //对第二个元素执行opacity过渡变换<br>         'opacity': [0.2, 0.5]<br>     }<br> });<br> <br>差不多就这样了，不过别看就这么些东西，但是它们提供的功能足够强大，好好使用他们吧:)。<br> <br> <br>  mootools1.1正式发布了,新特性一览 <br>今天上了下mootools的主站，发现1.1 released。<br>看了一下，主要的新特性如下：<br>一.更快的速度,兼容性和全方位优化<br>mootools在速度上面进行了很大的优化，比较突出的是在CSS选择器方面(不仅仅在实现逻辑方面进行优化，XPATH被在所有支持的浏览器中启用 )<br>二.更加新颖的事件系统<br>1.自定义事件：提供了一套api来提供定义自定义事件。比如mootools自带的mouseenter,mouseleave,domready就是这类自定义事件。<br>2.Element::cloneEvents提供了事件的复制<br>如:note.clone().cloneEvents(note); //复制note对象并且把原来note对象上的事件监听也复制过去<br>三.提供更多的Element的方法及新的Element构造方式。<br>例如新的构造Elment如下：<br>  var note = new Element('div', {<br>         'id': 'note',<br>         'class': 'note',<br>          'styles': {<br>                 'left': 15,<br>                 'top': 15<br>         },<br>          'events': {<br>                 'click': noteConfirm,<br>                 'mouseover': noteShowMore<br>         }<br> });<br> <br>对比原先的功能对等的构造方式：<br>  var note = new Element('div').addClass('note').setProperty('id', 'note').setStyles({<br>         'left': 15,<br>         'top': 15<br>  }).addEvents({<br>         'click': noteConfirm,<br>         'mouseover': noteShowMore<br> });<br> <br>*新方法：<br>Element::set - 功能如同新的构造方法的第二个参数一样，可以给Element添加各种属性<br>Element::hasChild  - 判断是否内部含有所给出的子元素<br>*改进的方法：<br>Element::setStyle - 对于没有明确给出单位的数值型值，将默认为单位是'px'<br>Element::adopt - 新版本支持多个元素（这个非常不错，很方便）<br> <br>四.元素过滤器<br>利用新的元素过滤器，可以对使用$$得到的元素进行进一步的归纳。这些将不需要Element.Selectors，而只使用原生的tag名选择过滤方法(应该速度上快一点吧)<br>一下例子中将不会用到Element.Selectors:<br>$('div').filterByClass('myClass');<br>而这个会用到：<br>$('div.myClass');<br>更真实的例子：<br> $('myElement').getChildren().filterByClass('myClass');<br> 五.更加完善的Ajax功能<br>基本的Ajax实现逻辑从Ajax类中转入到了XHR类中了。<br>其他提供的一些更加强大的方法：<br>Ajax::cancel - 可中断正在执行的请求。如果启用了‘autoCancel’选项，则当发出新的请求的时候自动中断当前请求<br>Ajax::evalScripts - 加强了全局的eval及自动执行Content-Type为javascript的返回内容<br>postBody选项更名为data,因为现在XHR可以分别接受get和post方法提交的数据<br>六.Hash.Cookie和Group<br>Hash.Cookie是一个扩展的Hash类，它可以自动或手工的保存或加载在Cookie中以JSON格式存储的数据<br>Group - 可以对元素和事件进行分组处理的类(用法可以参见我前面的文章)<br>七.工具集<br>1）新或增强的工具方法：<br>$defined , $time , $type<br>2）新的Array方法：<br>Array::getLast , Array::getRandom , Array::merge ,Array::include<br>3)新的String方法：<br>String::contains , String::escapeRegExp<br>4)新的Number方法：<br>Number::times(好Ruby啊!) , Number::limit , Number::round<br>5)浏览器检测<br>加入了window.webkit419 , window.webkit420，而window.khtml已经被作为过期api<br>八.增强的垃圾收集机制<br>九.其他的增强<br>1）Accordion::addSection可以用来在向一个已经创建的Accordion中添加更多的元素<br>2）Sortables变得更加稳定，以及不依赖于Drag.Move<br>3）新的Fx.Transtions，它已经变得更加的可配置<br>4）Fx.Slide允许border和margin<br>5）Element::getStyle现在已经全面支持padding/margin/border(包括针对IE的width/height的修正)<br>十.变更的API<br> 一些过期的api在v1.1中还是能用，但是，在v1.2中将作删除。<br>1.Ajax的postBody变更为data<br>2.Array::test被Array::contains替代<br>3.Object.extend,Object.merge和Object.Native现在已经推荐使用$extend, $merge,$native<br>4.Window.onDomReady被作为过期API,取代它的是'domready'这个自定义事件，如：<br>window.addEvent('domready', fn). <br>5.Hash::each的功能行为已经变更成和$each所提供的功能等价的行为。<br>6.Hash::empty的功能变为清空所有hash键值(原来的功能是判断hash是否为空,现在等价的功能由Hash::length提供)。<br> 7.window.khtml由window.webkit取代<br> <!--v:3.2--> ]]></description>
<category><![CDATA[个人日记]]></category>
<author><![CDATA[287743295@qq.com(⊕紫雨)]]></author>
<comments>http://287743295.qzone.qq.com/blog/1219111758#comment</comments>
<qz:effect>512</qz:effect>
<pubDate>Tue, 19 Aug 2008 02:09:18 GMT</pubDate>
<guid>http://287743295.qzone.qq.com/blog/1219111758</guid>
</item>

<item>
<title><![CDATA[mootools4]]></title>
<link>http://287743295.qzone.qq.com/blog/1219111725</link>
<description><![CDATA[ mootools【六】- Event篇 <br>mootools中定义了一个Event类，它提供了对原始window的事件对象event的扩展，使用的时候，可以 把原来的event对象作为Event的构造方法参数传入:<br>var event = new Event(event);<br>这样，返回的event就包含了所有mootools经过扩展的功能，具体扩展的属性和方法如下：<br>================================================================<br>属性：<br> shift - 当触发的事件是键盘按键事件时，判断按下的按键是否是shift键<br>$('myLink').onkeydown = function(event){<br>     var event = new Event(event);        //扩展了的event  <br>     alert(event.shift);                              //如果按下的按键是shift,则alert结果为true<br> };<br>[control,alt,meta用法和shift相同。]<br> <br>code - 当触发的事件是键盘按键事件时，按下键的keycode<br> <br>page.x - 鼠标事件触发时，鼠标相对于整个窗体的x<br>page.y - 鼠标事件触发时，鼠标相对于整个窗体的y<br>client.x - 鼠标事件触发时，鼠标相对于当前视野的y<br>client.y - 鼠标事件触发时，鼠标相对于当前视野的y<br>(一般情况下，client.x,client.y效果和page.y，page.y一样；但当窗体出现滚动条的时候，两者效果就有差别了。)<br> $('myInput').addEvent('click',function(event){<br>      var event = new Event(event);<br>      alert(event.page.y + &quot;||&quot; + event.client.y);<br> });<br> key - 当触发的事件是键盘按键事件时，按下按键的名字，如：&quot;enter&quot;,&quot;esc&quot;等等。<br> <br>target - 发生事件的元素。<br>relatedTarget - 发生mouseover和mouseout事件时的元素对象的参照对象。<br> <br>================================================================<br>方法：stop<br>作用：停止事件的执行<br> <br>方法：stopPropagation<br>作用：停止事件的冒泡传递<br> <br>方法：preventDefault<br>作用：停止事件的默认动作<br> <br>由于Event的引进，mootools又给Function扩展了一个方法：<br>bindWithEvent<br>它和Function的bindAsEventListener方法用法基本相同，不一样的是，bindAsEventListener方法传递到事件监听器中的是原来的event对象，而bindWithEvent则是Event的实例对象。<br> <br> <br> <br> <br>  mootools的学习资源 <br>网上看到有朋友搜集了很多关于mootools的资料链接，非常好，感谢。<br>　一.教程/文章/代码实例： <br>　　 <br>　　<a href="http://clientside.cnet.com/wiki/mootorial/" target="_blank">http://clientside.cnet.com/wiki/mootorial/</a><wbr /> --- The Mootorial：比较完整的mootools教程 <br>　　<a href="http://solutoire.com/2007/02/16/mootools-ajax-xhr-classes/" target="_blank">http://solutoire.com/2007/02/16/mootools-ajax-xhr-classes/</a><wbr /> --- ajax 和 XHR <br>　　<a href="http://solutoire.com/2007/01/31/mootools-10-whats-new/" target="_blank">http://solutoire.com/2007/01/31/mootools-10-whats-new/</a><wbr /> --- Mootools 1.0: What’s new <br>　　&quot;<a href="http://solutoire.com/2006/12/25/porting-prototype-enumerable-functions-to-mootools-array-objects/" target="_blank">http://solutoire.com/2006/12/25/porting-prototype-enumerable-functions-to-mootools-array-objects/</a><wbr /> --- 将 Prototype的Enumerable移植到Mootools Array <br>　　<a href="http://www.coryhudson.com/blog/2006/09/12/extending-objects-and-classes-with-mootools/" target="_blank">http://www.coryhudson.com/blog/2006/09/12/extending-objects-and-classes-with-mootools/</a><wbr /> --- 用mootools扩展 Objects 和 Classes <br>　　<a href="http://www.coryhudson.com/blog/2006/09/14/useful-utility-functions-in-mootools/" target="_blank">http://www.coryhudson.com/blog/2006/09/14/useful-utility-functions-in-mootools/</a><wbr /> --- Mootools中有用的“Utility”函数 <br>　　<a href="http://www.coryhudson.com/blog/2006/09/26/extending-dom-nodes-with-mootools/" target="_blank">http://www.coryhudson.com/blog/2006/09/26/extending-dom-nodes-with-mootools/</a><wbr /> --- 用 Mootools 扩展 DOM Nodes <br>　　<a href="http://www.snook.ca/archives/javascript/mootools_drag_a/" target="_blank">http://www.snook.ca/archives/javascript/mootools_drag_a/</a><wbr /> --- Mootools 拖拽实例 <br>　　<a href="http://smoothgallery.jondesign.net/getting-started" target="_blank">http://smoothgallery.jondesign.net/getting-started</a><wbr /> --- 在你的网站上创建一个画廊或幻灯 <br>　　<a href="http://www.chromasynthetic.com/blog/wp-content/uploads/2006/09/mootools1.html" target="_blank">http://www.chromasynthetic.com/blog/wp-content/uploads/2006/09/mootools1.html</a><wbr /> --- 简单的导航条实例 <br>　　<a href="http://www.chrisesler.com/mootools/mootools-dragwindow.html" target="_blank">http://www.chrisesler.com/mootools/mootools-dragwindow.html</a><wbr /> --- 可拖动的窗口实例（实际上是可拖动的div） <br>　　<a href="http://www.chrisesler.com/mootools/mootools-rowcolumnhighlight.php" target="_blank">http://www.chrisesler.com/mootools/mootools-rowcolumnhighlight.php</a><wbr /> --- 表格行列高亮实例 <br>　　<a href="http://techblog.billkrueger.com/2006/10/11/mootools-sortable-list-example/" target="_blank">http://techblog.billkrueger.com/2006/10/11/mootools-sortable-list-example/</a><wbr /> --- 可排序列表实例 <br>　　<a href="http://www.digitalknk.com/2006/10/10/final-class-project-complete/" target="_blank">http://www.digitalknk.com/2006/10/10/final-class-project-complete/</a><wbr /> --- 可折叠菜单的视频教程 <br>　　<a href="http://solutoire.com/2007/01/16/mootools-playing-with-height-transitions/" target="_blank">http://solutoire.com/2007/01/16/mootools-playing-with-height-transitions/</a><wbr /> --- 非常好的tab菜单教程（Mootools: playing with height-transitions） <br>　　<a href="http://solutoire.com/2006/11/29/mootools-the-ajax-class/" target="_blank">http://solutoire.com/2006/11/29/mootools-the-ajax-class/</a><wbr /> --- 关于ajax类 <br>　　<a href="http://www.thepcspy.com/articles/programming/ajax_search_with_ms_live_and_mootools" target="_blank">http://www.thepcspy.com/articles/programming/ajax_search_with_ms_live_and_mootools</a><wbr /> --- 用Mootools实现基于ajax的Ms live查询 <br>　　<a href="http://solutoire.com/2006/11/29/mootools-horizontal-accordions-explained/" target="_blank">http://solutoire.com/2006/11/29/mootools-horizontal-accordions-explained/</a><wbr /> --- 又一个可折叠菜单 <br>　　<a href="http://solutoire.com/2006/12/18/mootools-json-explained/" target="_blank">http://solutoire.com/2006/12/18/mootools-json-explained/</a><wbr /> --- Json模块与php教程 <br>　　<a href="http://dev.digitarald.de/tile.html" target="_blank">http://dev.digitarald.de/tile.html</a><wbr /> --- 移动背景实例 <br>　　<a href="http://www.dotes.com.br/mootools/FlyOverBackground.html" target="_blank">http://www.dotes.com.br/mootools/FlyOverBackground.html</a><wbr /> --- 移动背景实例（fixed for ie） <br>　　<a href="http://dev.digitarald.de/ghostdrag.html" target="_blank">http://dev.digitarald.de/ghostdrag.html</a><wbr /> --- 拖拽实例 <br>　　<a href="http://dev.digitarald.de/tabs.html" target="_blank">http://dev.digitarald.de/tabs.html</a><wbr /> --- tab实例 <br>　　<a href="http://beautyindesign.com/tutorial/free_series_mootools_for_the_rest_of_us.php" target="_blank">http://beautyindesign.com/tutorial/free_series_mootools_for_the_rest_of_us.php</a><wbr /> --- 5节课的Mootools教程：MooTools for the Rest of Us <br>　　<a href="http://www.chrisesler.com/mootools/fisheye/index.php" target="_blank">http://www.chrisesler.com/mootools/fisheye/index.php</a><wbr /> --- Mac os dock样式的菜单 <br>　　 <br>　二. 插件 <br>　　<a href="http://smoothgallery.jondesign.net" target="_blank">http://smoothgallery.jondesign.net</a><wbr /> --- JonDesign的SmoothGallery：画廊、幻灯和展厅 <br>　　<a href="http://www.electricprism.com/aeron/slideshow/" target="_blank">http://www.electricprism.com/aeron/slideshow/</a><wbr /> --- 幻灯 <br>　　<a href="http://smoothslideshow.jondesign.net" target="_blank">http://smoothslideshow.jondesign.net</a><wbr /> --- JonDesign的幻灯类库 <br>　　<a href="http://solutoire.com/2006/11/29/fxfont-mootools-and-font-resizing/" target="_blank">http://solutoire.com/2006/11/29/fxfont-mootools-and-font-resizing/</a><wbr /> --- Fx.Font 自动改变文字大小 <br>　　<a href="http://www.brunofigueiredo.com/archive/2006/09/14/88.aspx" target="_blank">http://www.brunofigueiredo.com/archive/2006/09/14/88.aspx</a><wbr /> --- moobox：实现简单的LightBox效果 <br>　　<a href="http://www.brunofigueiredo.com/archive/2006/09/21/103.aspx" target="_blank">http://www.brunofigueiredo.com/archive/2006/09/21/103.aspx</a><wbr /> --- 反射效果 <br>　　<a href="http://www.brunofigueiredo.com/archive/2006/09/15/93.aspx" target="_blank">http://www.brunofigueiredo.com/archive/2006/09/15/93.aspx</a><wbr /> --- 另类图片标签 <br>　　<a href="http://www.brunofigueiredo.com/code/jsShadowReflection/extension_1.htm" target="_blank">http://www.brunofigueiredo.com/code/jsShadowReflection/extension_1.htm</a><wbr /> --- efxFactory 0.1 BETA:阴影和反射效果库 <br>　　<a href="http://inviz.ru/moo/transcorners/" target="_blank">http://inviz.ru/moo/transcorners/</a><wbr /> --- 圆角效果 <br>　　<a href="http://www.digitalia.be/software/slimbox" target="_blank">http://www.digitalia.be/software/slimbox</a><wbr /> --- Slimbox：完整的Lightbox克隆，只有7k <br>　　<a href="http://www.digitalia.be/software/reflectionjs-for-mootools" target="_blank">http://www.digitalia.be/software/reflectionjs-for-mootools</a><wbr /> --- 反射 Reflection.js <br>　　<a href="http://nhatanh.voxfamilyvn.com/moo/slider.html" target="_blank">http://nhatanh.voxfamilyvn.com/moo/slider.html</a><wbr /> --- Moo.Slider：滑动器 <br>　　<a href="http://nhatanh.voxfamilyvn.com/moo/calendar.html" target="_blank">http://nhatanh.voxfamilyvn.com/moo/calendar.html</a><wbr /> --- Moo.Calendar：日历 <br>　　<a href="http://og5.net/~wusch/?cat=javascript" target="_blank">http://og5.net/~wusch/?cat=javascript</a><wbr /> --- ie6的png透明插件 <br>　　<a href="http://www.clanccc.co.uk/moo/sortlist.html" target="_blank">http://www.clanccc.co.uk/moo/sortlist.html</a><wbr /> --- 嵌入式可排序列表 <br>　　<a href="http://www.blackmac.de/archives/44-Mootools-AJAX-timeout.html" target="_blank">http://www.blackmac.de/archives/44-Mootools-AJAX-timeout.html</a><wbr /> --- AjaxPlus：为AJAX增加超时事件 <br>　　 <br>  mootools版本的lightbox实现 <br>最近对mootools非常感兴趣。如别人评价它一样：轻盈，又不失强大。同时，它的源代码的条理也非常清晰。慢慢一边阅读它的源代码一边尝试它提供的功能是学习它的一个好途径。<br>从网上找到了基于mootools实现的LightBox组件(一个非常酷的图片浏览组件)，从我上一篇blog中有相关实现这个程序的官方链接(Slimbox),不过这个网站的.be域名我们不通过代理的话访问不了。<br>我找到的这个mootools的lightbox实现是基于较早期的mootools版本的，和现在的正式发布版本mootools1.0.0有一点点不兼容，我把它修改了下，让它里面的方法基于mootools1.0.0里提供的api了。<br>可以从我这个链接下载我修改过的Demo：<br><a href="http://www.live-share.com/files/200713/moobox.rar.html" target="_blank">http://www.live-share.com/files/200713/moobox.rar.html</a><wbr /><br> <br><br> <br>  mootools【七】- mootools的构造应用的基础设施Common.js <br>正因为mootools是基于OO的思想，所以，在mootools自身提供的功能中，充分使用了OO的理念--继承和实现.<br>mootools中提供一组 基础功能类：Chain,Events,Options,Group，然后我们可以通过implement他们来在我们的类中实现它们所提供的功能。mootools自己提供的Ajax, XHR和Fx.Base类就实现了这些基础功能类。<br> <br>类：Chain<br>作用：这里Chain类把function组织成一个链式结构。<br>它提供了三个方法：<br>chain - 添加一个函数到链中<br>callChain - 执行链中第一个函数，然后删除(原来链中第二个函数将变为新的链首)<br>clearChain - 清除链中所有函数<br>  var c = new Chain().chain(function(){<br>          alert('Func A!');<br>  }).chain(function(){<br>          alert('Func B!');<br>  }).chain(function(){<br>          alert('Func C!');<br> });<br>     <br> c.callChain();         //&quot;Func A!&quot;<br> c.callChain();         //&quot;Func B!&quot;<br> c.callChain();         //&quot;Func C!&quot;<br> <br>类：Events<br>作用：通俗的来讲，它其实像是一个事件管理器(各人觉得大多数情况下应该是自定义事件)。别的类可以实现它来进行自己的事件管理。<br> 它同样提供了三个方法：<br>addEvent - 向管理器中添加指定事件的监听器<br>fireEvent - 触发执行指定事件下的所有监听器方法<br>removeEvent - <br>var evts = new Events();<br> var fa = function(e){<br>      alert('aaaaaaa');<br> };<br> var fb = function(e){<br>      alert('bbbbbbb');<br> };<br> evts.addEvent('onMyEvent', fa).addEvent('myEvent', fb);<br> evts.fireEvent('onMyEvent');          //先alert出&quot;aaaaaaa&quot;,然后alert出&quot;bbbbbbb&quot;<br> <br> evts.removeEvent('onMyEvent',fa);<br> evts.fireEvent('onMyEvent');         //alert 出&quot;bbbbbbb&quot;<br> <br>类：Options<br>作用：为实现该类的类提供一个可选参数管理器<br>它提供了一个方法：<br>setOptions - 设置类的this.options,该方法的第一个参数是要给出的默认参数列表，第二个参数是可提供用户输入的参数列表。如果实现同时实现Options类和Events类，则参数列表中有以on开头(/^on[A-Z]/)的参数名，则自动会把这些参数加入到Events提供的事件管理器中。<br>var MyClass = new Class({<br>  initialize: function(options){<br>      this.setOptions({<br>          width:  '100px', <br>          height: '200px',<br>          onMyEvent: Class.empty<br>     },options);<br>  }<br>});<br> <br> MyClass.implement(new Options());        //自定义类实现Options<br> MyClass.implement(new Events());   //自定义类实现Events<br> <br> //实例化MyClass<br> var c = new MyClass({<br>    deep: '100px',<br>    onMyEvent: function(){alert('option[deep]&gt;:' + this.options['deep']);}<br> });<br> <br> c.fireEvent('onMyEvent');             //alert出&quot;option[deep]:100px&quot;<br> <br>类：Group<br>作用：把元素分组，然后可以为这些组进行添加事件监听器，这些“组监听器”的触发时机是这样的：当组里面的所有元素都触发过指定的事件后，&quot;组监听器&quot;就开始执行。比如有3个按钮A,B,C组成一个Group,然后为这个Group添加一个click事件的监听器方法，则，当你分别去按这3个按钮，不分次序，不分按的次数（比如A按了1次，B按了2次,然后再按C）,当按最后一个按钮时候(比如已经按过了A和B，现在按下C)，那个“组监听器”就被执行了。<br>&lt;a href=&quot;#&quot; id=&quot;link1&quot; &gt;AAA&lt;/a&gt;<br>&lt;a href=&quot;#&quot; id=&quot;link2&quot; &gt;BBB&lt;/a&gt;<br>&lt;a href=&quot;#&quot; id=&quot;link3&quot; &gt;CCC&lt;/a&gt;<br> <br> <br>$('link1').addEvent('click',function(){alert('AAA');});<br> $('link2').addEvent('click',function(){alert('BBB');});<br> $('link3').addEvent('click',function(){alert('CCC');});<br> <br> var g = new Group($('link1'),$('link2'),$('link3'));<br> g.addEvent('click', function(){<br>      alert('group event');<br> });<br> <br>//当你按照类似如下规律点击链接：<br>先点击link1：alert出&quot;AAA&quot;<br>再点击link2：alert出&quot;BBB&quot;<br>最后点击link3：先alert出&quot;group event&quot;，再alert出&quot;CCC&quot;<br> <br>一般情况下，Chain,Events和Options都不会单独使用，都会被别的类implement，来为这些类提供功能增强。<br><br>  mootools【八】 - Css查询支持之Dom.js <br>mootools支持通过Css选择器语法来获取元素节点，以最少的代码做最多的事情。在Dom.js中提供了实现这些功能的工具方法以及元素级的扩展。<br>工具方法：$E<br>作用：按照css选择器语法获取第一个符合规则的元素<br>参数：<br>selector - css选择器,如a,#my_div等<br>filter - 可选，过滤范围，默认是document<br> &lt;div id=&quot;myDiv&quot;&gt;<br>     &lt;a href=&quot;#&quot; id=&quot;link1&quot;&gt;AAA&lt;/a&gt;<br>     &lt;a href=&quot;#&quot; id=&quot;link2&quot;&gt;BBB&lt;/a&gt;<br>     &lt;a href=&quot;#&quot; id=&quot;link3&quot;&gt;CCC&lt;/a&gt;<br> &lt;/div&gt;<br> <br> $E('a','myDiv');    //获取的是id为link1的超链接元素<br> <br>工具方法：$ES<br>作用：按照css选择器语法获取所有符合规则的元素<br>参数：<br>selector - css选择器,如a,#my_div等<br>filter - 可选，过滤范围，默认是document<br> &lt;div id=&quot;myDiv&quot;&gt;<br>     &lt;a href=&quot;#&quot; id=&quot;link1&quot;&gt;AAA&lt;/a&gt;<br>     &lt;a href=&quot;#&quot; id=&quot;link2&quot;&gt;BBB&lt;/a&gt;<br>     &lt;a href=&quot;#&quot; id=&quot;link3&quot;&gt;CCC&lt;/a&gt;<br> &lt;/div&gt;<br> <br>  $ES('a','myDiv');      //获取所有3个链接元素<br><br>-------------------------------------------------------------------------------------------------------------------------<br>对Element的扩展方法：<br>方法：getElements<br>作用：获取当前元素下符合给出css选择器的元素<br> &lt;div id=&quot;myDiv&quot;&gt;<br>     &lt;a href=&quot;#&quot; id=&quot;link1&quot;&gt;AAA&lt;/a&gt;<br>     &lt;a href=&quot;#&quot; id=&quot;link2&quot;&gt;BBB&lt;/a&gt;<br>     &lt;a href=&quot;#&quot; id=&quot;link3&quot;&gt;CCC&lt;/a&gt;<br> &lt;/div&gt;<br>     <br> $('myDiv').getElements('a');   //获取myDiv下的3个链接<br> <br><br>方法：getElementById<br>作用：如同document.getElementById方法一样，该方法也是按照指定id来获取元素，只不过是再当前元素之下的范围内查找。<br>  $('myDiv').getElementById('link2');<br><br>方法：getElement<br>作用：功能如同$E,只不过查找范围是当前元素。获取当前元素下符合指定选择器的第一个元素。<br> $('myDiv').getElement('a');<br><br>方法：getElementsBySelector<br>作用：功能和getElements大致相同，并且支持css选择器中的逗号。该方法使用的时候可以用$$来替代。<br> $('myDiv').getElementsBySelector('#link1,#link2');<br><br>========================================================================<br>document又在以上扩展的基础上被扩展出一个方法： getElementsByClassName<br> document.getElementsByClassName('my_clazz');<br> <br>标准javascript中只有document有getElementsByTagName。经过扩展，mootools又让每个Element元素可以使用 getElementsByTagName方法：<br> $('myDiv').getElementsByTagName('a');<br> <br>这部分的扩展已经让mootools的对象获取方式足够方便和强大了。非常的棒！<br> <br> <br><br> <br>  mootools【九】- 工具类Hash和Color <br>     Hash数据结构，我们通常用来存放键值对。在javascript中，没有规范的Hash的实现，一般，我们都会通过包装对象来模拟实现这样的Hash,来实现规范化的Hash对象操作。<br>    另外，颜色代码的操作在做UI的时候很频繁，尤其是要做十分绚丽的效果的时候，需要对颜色代码做很多的计算，mootools在这个方面做了比较多的工作，通过对String,Array的扩展，以及提供的Color类，我们随时可以对颜色数据进行转换和计算。<br>类： Hash<br>方法：<br> 构造方法 - 传入一个包含键值对的object<br> get - 按键取值<br> hasKey - 判断是否有指定的键<br> set - 把键值对存放入Hash<br> remove - 删除指定键的键值对<br> each - 用法和Array的each相似，每个键值对的通过each中指定的函数的第一个参数(值)和第二个参数(键)传入。<br> extend - 把一个包含键值对的对象合并到当前Hash中，相同键的值将被新的值覆盖。<br> empty - 这个方法的功能在mootools1.0和1.1dev版本中是完全不一样的，1.0中是判断Hash中是否已经没有键值对，而在1.1dev中是清空Hash中的所有键值对，请注意区别。<br> keys - 获取Hash中的所有键<br> values - 获取Hash中的所有值<br>  var hash = new Hash({<br>         one: 1,<br>         two: 2,<br>         three: 3<br> });<br>     <br> var one = hash.get('one');<br> var hk  = hash.hasKey('three');<br> hash.set('four',4);<br>  hash.each(function(v,k){<br>         alert(k+'-'+v);<br> });<br><br>创建Hash的快捷方法：<br>$H<br>$H({a:1,b:2})<br><br>------------------------------------------------------------------------------------------------------------------------------------------------<br>类：Color<br>构造方法参数：<br>color - 代表颜色的代码，可以是十六进制代码，代表RGB或HSB代码的数组<br>type - 可选，用于明确指定代码的类型，有rgb,hsb,hex。当你要创建hsb代码或hex数组形式代码的时候，需要明确指定。<br>作用：颜色对象，包含了很多颜色管理方法。<br>var black = new Color('#000');<br>var purple = new Color([255,0,255]);<br> <br>方法：mix<br>作用： 把两种或更多的颜色和当前颜色混合<br>参数：<br>参数个数不定，可以把多个颜色代码混合，当最后一个参数是一个数字的时候，这个数字被用作每次混合时取新颜色的百分量。<br>var darkpurple = black.mix('#fff', purple, 10);<br>$('myDiv').setStyle('background-color', darkpurple);<br><br>方法：invert<br>作用：取当前颜色的反色<br>var c = new Color('#FF9900').invert();<br>$('myDiv').setStyle('background-color',c);<br><br>方法：setHue<br>作用：设置颜色的色相<br>var c = new Color('#FF9900').setHue(10);<br>$('myDiv').setStyle('background-color',c);<br><br>方法：setSaturation<br>作用：设置色饱和度<br>var c = new Color('#FF9900').setSaturation(50);<br>$('myDiv').setStyle('background-color',c);<br> <br>方法：setBrightness<br>作用：设置色彩亮度<br>var c = new Color('#FF9900').setBrightness(10);<br>$('myDiv').setStyle('background-color',c);<br> <br><br>创建Color的两个快捷工具方法：<br>$RGB(r, g, b) - 建立RGB模式的Color<br>$HSB(h, s, b) - 建立HSB模式的Color<br><br>如果加载了Color.js，那么Array还会被扩展两个方法：<br>rgbToHsb - 当前数组前三个元素将被作为rgb值,转换为hsb值代表的数组<br>hsbToRgb - 和rgbToHsb 相反的功能<br> <br><br>  mootools【十】- window的扩展 <br>        浏览器的window对象本身就提供了我们很多的对浏览器本身属性的获取或设置的方法，但是我们也知道，由于各大浏览器之间对标准的实现不统一，导致很多方法功能上有所出入，mootools为我们统一了我们最常用的一些方法：<br>        mootools的Window.Base.js里面，主要实现了对DOM树创建完成的事件监听。以前，我们可能经常把javascript代码写在html代码的最后面获者加上defer属性，以保证javascript代码要操作的html先于javascript代码装载(如果不是这样的话，javascript将获取不到目标元素而出错)，但是，这种方式看起来还是太杂乱，保险系数也不是最高的。其实像ie的话可以根据document的readyState属性来判断文档树的建立状态，而有些浏览器在创建文档树之后会触发onload事件，mootools把这些都包装了起来，形成一个统一的自定义事件&quot;domready&quot;，你可以像添加其他监听器一样来为window添加这个domready事件的监听器方法：<br>  window.addEvent('domready', function(){<br>        alert('the dom is ready');<br>    });<br>另外，有个快捷方法，效果和以上相同：<br>  window.onDomReady(function(e){<br>         alert('dom is ready!!!');<br> });<br> <br>mootools的Window.Size.js中呢，提供了一系列和浏览器window的尺寸有关的工具方法，<br>window的扩展方法：<br>方法： getWidth - 获取window的当前高度(不包含滚动条的滚动量，即当前能见视野高度)<br>方法：getHeight - 获取window的当前宽度(不包含滚动条的滚动量，即当前能见视野宽度)<br>方法：getScrollWidth - 获取window的当前高度(包含了整个内容区域，即可滚动部分也计算在内)<br>方法：getScrollHeight - 获取window的当前宽度(包含了整个内容区域，即可滚动部分也计算在内)<br>方法：getScrollLeft - 获取window滚动的水平偏移量<br>方法：getScrollTop - 获取window滚动的垂直偏移量<br>方法：getSize - 获取window上面几个方法的提供的数据，格式：<br>{<br>   'size':            {'x': this.getWidth(),             'y': this.getHeight()},<br>   'scrollSize':  {'x': this.getScrollWidth(),  'y': this.getScrollHeight()},<br>   'scroll':         {'x': this.getScrollLeft(),      'y': this.getScrollTop()}<br>}<br> <!--v:3.2--> ]]></description>
<category><![CDATA[个人日记]]></category>
<author><![CDATA[287743295@qq.com(⊕紫雨)]]></author>
<comments>http://287743295.qzone.qq.com/blog/1219111725#comment</comments>
<qz:effect>512</qz:effect>
<pubDate>Tue, 19 Aug 2008 02:08:45 GMT</pubDate>
<guid>http://287743295.qzone.qq.com/blog/1219111725</guid>
</item>

<item>
<title><![CDATA[mootools3]]></title>
<link>http://287743295.qzone.qq.com/blog/1219111625</link>
<description><![CDATA[mootools【四】- Function篇 <br>闭包是javascript中非常强大的工具， 在实际应用开发中，我们基本上都会用到。从各个javascript框架中，我们也可以到处看到闭包的影子。mootools在javascript的Function上扩展出了一些十分方便的创建函数闭包的方法，其中一些我们在prototype.js中也使用过，类如bind,bindAsEventListener等。<br>对Function的扩展，mootools主要提供了一个create方法来创建闭包，这个方法其实实现了mootools对Function的所有扩展功能,但是一般我们不会直接去用它，而是使用mootools基于这个create方法派生出的其他方法。<br>方法： create<br>参数选项列表：<br>bind - 创建的闭包函数中this所指向的对象。默认指向当前函数。<br>event -  默认为false；<br>             如果为true,则创建的闭包函数将会作为一个事件监听器，传入的第一个参数是一个event对象；<br>             如果为一个类名，则会创建这个类的一个实例,并把event对象传入该类<br>arguments - 一个以数组形式传入创建的闭包函数的参数列表。如果同时指定了上面的event选项和本arguments选项,则事件对象event对象将作为参数列表中的第一个，而其他参数排在其后。<br>delay - 延迟执行的毫秒数(setTimeout的功能)。默认不延迟执行。如果指定了，则调用该创建的闭包函数时将按指定的毫秒数延迟执行（调用返回一个时间处理句柄）。<br>periodical - 间隔执行的毫秒数(setInterval的共能)。默认不进行间隔执行。如果指定了，则调用该创建的闭包函数后，会每间隔指定的毫秒数后触发执行（调用返回一个时间处理句柄）。<br>attempt - 如果指定为true,则再创建闭包的过程中，将会使用捕捉异常，如果无异常抛出，则返回正常的闭包函数；如果发生异常，则返回捕捉到的异常对象。默认为false。<br>&lt;input type=&quot;button&quot; value=&quot;test&quot; onclick=&quot;b()&quot;/&gt;<br>function myClass(){<br> alert('X:' + event.clientX);<br>}<br>function a(){<br> alert('Base...');<br>}<br>var b = a.create({'event':myClass});<br>//按下按钮后，将先alert出如&quot;X:33&quot;，接着alert<br> <br>function a(p1,p2){<br> alert(this.getTime());<br> alert(p1+'||'+p2);<br>}<br>var b = a.create({'bind':new Date(),'arguments':[100,200]});<br>b();<br>//alert出如&quot;1233445&quot;<br>//alert出&quot;100||200&quot;<br> <br>方法：pass<br>参数列表：<br>args - 数组形式传入的参数<br>bind - 可选。this指向的对象<br>功能：create的功能简化版。实现的即是create中选项'arguments'的功能。<br>function a(p1,p2){<br> alert(p1+'||'+p2);<br>}<br>var b = a.pass([100,200]);<br>b();<br> <br>方法：attempt<br>参数列表：<br>args - 数组形式传入的参数<br>bind - 可选。this指向的对象<br>功能：create的功能简化版,并且创建闭包函数后执行。实现的即是create中选项'attempt'为true时的功能。<br>myFunc.attempt([100,200]);<br> <br>方法：bind<br>参数列表：<br>bind - 可选。this指向的对象<br>args - 可选。数组形式传入的参数<br>功能：create的功能简化版。实现的即是create中选项'bind'的功能。<br>function myFunc() {<br>  this.setStyle('color', 'red');<br>}<br>var myBoundFunction = myFunction.bind(myElement);<br>myBoundFunction(); <br> <br>方法：bindAsEventListener<br>参数列表：<br>bind - 可选。this指向的对象<br>args - 可选。数组形式传入的参数<br>功能：create的功能简化版。实现的即是create中选项'bind'以及'event'为true时的功能。<br>&lt;div id=&quot;myDiv&quot;&gt;&lt;/div&gt;<br>&lt;input type=&quot;button&quot; id=&quot;mybtn&quot; value=&quot;test&quot; /&gt;<br>function a(){<br> this.innerHTML = 'Fired at ('+event.clientX + ',' + event.clientY +')';<br>}<br>$('mybtn').onclick = a.bindAsEventListener($('myDiv'));<br> <br>方法：delay<br>参数列表：<br>ms - 延迟执行的毫秒数<br>bind - 可选。this指向的对象<br>args - 可选。数组形式传入的参数<br>功能：create的功能简化版,并且创建闭包函数后执行。实现的即是create中选'delay'的功能。<br>function a(){<br> alert('Hello...');<br>}<br>a.delay(1000);<br> <br>方法：periodical<br>参数列表：<br>ms - 间隔执行的毫秒数<br>bind - 可选。this指向的对象<br>args - 可选。数组形式传入的参数<br>功能：create的功能简化版,并且创建闭包函数后执行。实现的即是create中选'periodical'的功能。<br>function a(){<br> alert('Hello...');<br>}<br>a.periodical(2000);<br>Function部分就这些啦，不过也足够强大了！<br>  mootools【五】 - Element篇 <br>Ajax开发中，做的最多的就是对DOM的操作， 增删节点，设置样式等等等等，如果按照常规的javascript开发的话，工作量大的足以搞的人头晕目眩。所以基本上每个javascript框架都会在DOM操作上花比较大的功夫，对我们使用频率最频繁的功能操作进行封装(其中包括修正各个浏览器之间的方法差异问题)，让我们的开发事半功倍。<br>mootools也提供了一套非常出色的解决方案，并且更OO。<br>首先，之前，通常我们创建DOM节点，都使用document.createElement()方法，而我们看mootools式的创建方法：<br> var myInput = new Element('input');<br>非常的优雅啊。<br> <br>方法：  $<br>美元，又见美元！<br>$基本上成了javascript框架中的标志性建筑了，短小精悍的语法使我们的代码看起来舒服不少，也使我们的js文件瘦了下身。<br>时下，各大javascript框架中都会提供$这个方法，基本上它都有按照id来获取DOM元素的功能，但各个框架在具体诠释它的时候各有不同的手法，功能的强弱上也不一样。比如prototype.js中的$可以根据给出的一个或多个id来获取这些DOM元素，而jQuery里的$更是非常强，可以按照CSS选择器的语法来获取DOM元素(其实mootools和prototype也是可以的，只不过是$$这个方法)。<br>这是mootools中的$()的最常用用法，它返回id为my_div的元素，并且这个元素被加上了所有mootools所进行的扩展。<br> var mydiv = $('my_div');<br>如果你使用document.getElmentById来获取的元素，则此时这个元素将没有包含mootools的任何扩展，你可以把这个元素对象作为参数调用$方法，之后返回的元素将被加上mootools的扩展。<br>var mydiv_noextend = document.getElementById('my_div');<br> <br>var mydiv_extended = $(mydiv_noextend);<br> <br>方法： $$<br>功能：通过CSS选择器语法来获取DOM元素(需要mootools的Dom.js模块的支持)<br>$$('a');                       //获取页面上所有超链接&lt;a&gt;标签对象<br>$$('a','b');                  //获取页面上所有超链接&lt;a&gt;标签和粗体&lt;b&gt;标签<br>$$('#my_div');          //获取id为my_div的元素<br>$$('#my_div a.myClass');      //获取id为my_div的元素子元素，并且这些自元素是的所有class=&quot;myClass&quot;的&lt;a&gt;标签<br> <br>=================================Element扩展方法=====================================<br>方法： inject<br>作用：可以用来把当前元素插入到指定元素之前(before)，之中(inside)，之后(after)。<br>  <br>&lt;div id=&quot;myDiv1&quot;&gt;aaa&lt;/div&gt;<br>&lt;div id=&quot;myDiv2&quot;&gt;bbb&lt;/div&gt;<br>&lt;div id=&quot;myDiv3&quot;&gt;ccc&lt;/div&gt;<br>$('myDiv3').inject($('myDiv1'),'before');      //把myDiv3插入到myDiv1之前<br> <br>方法： injectBefore<br>作用：可以用来把当前元素插入到指定元素之前 (即相当于参数为'before'的inject方法)<br>&lt;div id=&quot;myDiv1&quot;&gt;aaa&lt;/div&gt;<br>&lt;div id=&quot;myDiv2&quot;&gt;bbb&lt;/div&gt;<br>&lt;div id=&quot;myDiv3&quot;&gt;ccc&lt;/div&gt;<br> <br>$('myDiv3').injectBefore($('myDiv1')); <br> <br>方法：injectAfter<br>作用：可以用来把当前元素插入到指定元素之后 (即相当于参数为'after'的inject方法)<br>&lt;div id=&quot;myDiv1&quot;&gt;aaa&lt;/div&gt;<br>&lt;div id=&quot;myDiv2&quot;&gt;bbb&lt;/div&gt;<br>&lt;div id=&quot;myDiv3&quot;&gt;ccc&lt;/div&gt;<br> <br>$('myDiv3').injectAfter($('myDiv1')); <br> <br>方法：injectInside<br>作用：可以用来把当前元素插入到指定元素之中 (即相当于参数为'inside'的inject方法)<br>&lt;div id=&quot;myDiv1&quot;&gt;aaa&lt;/div&gt;<br>&lt;div id=&quot;myDiv2&quot;&gt;bbb&lt;/div&gt;<br>&lt;div id=&quot;myDiv3&quot;&gt;ccc&lt;/div&gt;<br> <br>$('myDiv3').injectInside($('myDiv1')); <br> <br>方法：adopt<br>作用：可以在当前元素中插入指定元素(参数可以是元素id，元素引用，html元素tag名)<br>$('myDiv').adopt($('myDiv1')); <br>$('myDiv').adopt('myDiv1'); <br>$('myDiv').adopt('button'); <br> <br>方法：remove<br>作用：删除元素<br>$('myDiv').remove();<br> <br> <br>方法：clone<br>参数列表： <br>contents - 是否连带节点的内容进行复制(deep clone)，如果不指定，则连带。<br>作用：复制元素<br>$('myDiv').clone();     <br>$('myDiv').clone(false);     //只复制myDiv本身，不复制其content和子元素<br> <br>方法：replaceWith<br>作用：用其他元素替换当前元素<br>&lt;div id=&quot;myDiv1&quot;&gt;abc&lt;/div&gt;<br>var a = new Element('button');<br>a.value = 'test';<br>$('myDiv1').replaceWith($(a));<br> <br>方法：appendText<br>作用：向元素添加文本节点<br>&lt;div id=&quot;myDiv1&quot;&gt;hello &lt;/div&gt;<br> <br>$('myDiv1').appendText('world');<br> <br>//结果：<br>&lt;div id=&quot;myDiv1&quot;&gt;hello world&lt;/div&gt;<br> <br>方法：hasClass<br>作用：判断元素的class属性中是否包含指定的样式名<br>&lt;div id=&quot;myDiv1&quot; class=&quot;clazz_1 clazz_2&quot;&gt;hello &lt;/div&gt;<br> <br>var x = $('myDiv1').hasClass('clazz_1');               //true<br> <br>方法：addClass<br>作用：向指定元素上添加样式class<br>$('myDiv1').addClass('clazz_1');<br> <br>方法：removeClass<br>作用：在指定元素上删除指定的样式class<br>$('myDiv1').removeClass('clazz_1');<br> <br>方法：toggleClass<br>作用：在addClass和removeClass的功能之间切换<br>&lt;div id=&quot;myElement&quot; class=&quot;myClass&quot;&gt;&lt;/div&gt;<br>$('myElement').toggleClass('myClass');<br>//结果为：<br>&lt;div id=&quot;myElement&quot; class=&quot;&quot;&gt;&lt;/div&gt;<br>===================================<br>//再次：<br>$('myElement').toggleClass('myClass');<br>//结果为：<br>&lt;div id=&quot;myElement&quot; class=&quot;myClass&quot;&gt;&lt;/div&gt;<br> <br>方法：setStyle<br>作用：向元素设置一个style属性<br>$('myDiv').setStyle('width','100px');<br> <br>方法:setStyles<br>作用：向元素设置多个style属性<br>$('myDiv').setStyles({<br>    border: '1px solid #000',<br>    width: '300px',<br>    height: '400px'<br>});<br> <br>或者(不推荐在这种方式下设置opacity属性)：<br> <br>$('myDiv').setStyles('border: 1px solid #000; width: 300px; height: 400px;');<br> <br>方法：setOpacity<br>作用：设置元素的透明度<br>$('myDiv').setOpacity(0.5);       //透明度设置为50%<br> <br>方法：getStyle<br>作用：获取style中指定属性的值<br>var w = $('myDiv').getStyle('width'); <br> <br>方法：addEvent<br>作用：为元素增加事件监听器<br>$('myDiv').addEvent('click', function(){<br>       alert('haha,clicked!');<br>});<br> <br>方法：addEvents<br>作用：为元素增加多个事件监听器(不过，在mootools1.0.0版本中，这个方法是有BUG的，推荐不要使用；mootools1.1开发版中，已经修复了BUG)<br>$('myBtn').addEvents({<br>    'click': function(e){alert('clicked!!!');},<br>    'mouseout': function(e){alert('mouseouted!!!');}<br> });<br> <br>方法：removeEvent<br>作用：从元素上删除指定的监听器方法<br>var fa = function(e){alert('aaaaaaaaaaaaaa');};<br>var fb = function(e){alert('bbbbbbbbbbbbbb');};<br>$('myBtn').addEvent('click',fa);<br>$('myBtn').addEvent('click',fb);<br>$('myBtn').removeEvent('click'，fa);<br> <br>方法：removeEvents<br>作用：从元素上删除指定事件的监听器，如果不指定事件，则将删除所有事件的监听器(和addEvents方法一样，该方法再1.0.0版本中也存在BUG,在1.1开发版本中已修复)<br>var fa = function(e){alert('aaaaaaaaaaaaaa');};<br>var fb = function(e){alert('bbbbbbbbbbbbbb');};<br>$('myBtn').addEvent('click',fa);<br>$('myBtn').addEvent('click',fb);<br>$('myBtn').removeEvents('click');<br> <br>方法：fireEvent<br>作用：触发元素的指定事件上的所有监听器方法<br>var fa = function(e){alert('aaaaaaaaaaaaaa');};<br>var fb = function(e){alert('bbbbbbbbbbbbbb');};<br>$('myBtn').addEvent('click',fa);<br>$('myBtn').addEvent('click',fb);<br>$('myBtn').fireEvent('click');      //fa和fb将立即被执行<br> <br> 方法：getFirst<br>作用：获取当前元素的第一个子元素节点<br>&lt;div id=&quot;myDiv&quot;&gt;<br>   &lt;div id=&quot;first&quot;&gt;first&lt;/div&gt;<br>   &lt;div id=&quot;second&quot;&gt;second&lt;/div&gt;<br>   &lt;div id=&quot;last&quot;&gt;last&lt;/div&gt;<br> &lt;/div&gt;<br>var f = $('myDiv').getFirst();<br>alert(f.id);            //alert &quot;first&quot;<br> <br> 方法：getLast<br>作用：获取当前元素的最后一个子元素节点<br>&lt;div id=&quot;myDiv&quot;&gt;<br>   &lt;div id=&quot;first&quot;&gt;first&lt;/div&gt;<br>   &lt;div id=&quot;second&quot;&gt;second&lt;/div&gt;<br>   &lt;div id=&quot;last&quot;&gt;last&lt;/div&gt;<br> &lt;/div&gt;<br> <br>var l = $('myDiv').getLast();<br>alert(l.id);              //alert &quot;last&quot;<br> <br>方法：getParent<br>作用：获取当前元素的父元素节点<br>&lt;div id=&quot;myDiv&quot;&gt;<br>   &lt;div id=&quot;first&quot;&gt;first&lt;/div&gt;<br>   &lt;div id=&quot;second&quot;&gt;second&lt;/div&gt;<br>   &lt;div id=&quot;last&quot;&gt;last&lt;/div&gt;<br> &lt;/div&gt;<br> <br>var par = $('first').getParent();<br> alert(par.id);                 //alert    &quot;myDiv&quot;<br> <br>方法：getChildren<br>作用：获取当前元素所有子元素节点<br>&lt;div id=&quot;myDiv&quot;&gt;<br>   &lt;div id=&quot;first&quot;&gt;first&lt;/div&gt;<br>   &lt;div id=&quot;second&quot;&gt;second&lt;/div&gt;<br>   &lt;div id=&quot;last&quot;&gt;last&lt;/div&gt;<br> &lt;/div&gt;<br> <br>var cs = $('myDiv').getChildren();<br>alert(cs.length);                 //alert    3<br> <br>方法：setProperty<br>作用：设置元素的属性<br>$('myImage').setProperty('src', 'whatever.gif'); <br> <br>方法：setProperties<br>作用：设置元素的多个属性<br>$('myElement').setProperties({<br>   src: 'whatever.gif',<br>   alt:  'whatever dude'<br>});<br> <br> 方法：setHTML<br>作用：相当于设置元素的innerHTML<br>$('myElement').setHTML(newHTML);<br> <br>方法：getProperty<br>作用：获取元素的指定属性<br>$('myImage').getProperty('src')<br> <br>方法：getTag<br>作用：获取HTML标签元素的标签名称<br>&lt;img id=&quot;myImage&quot; src=&quot;xx.gif&quot; /&gt;<br>$('myImage').getTag();         //img<br> <br>方法：scrollTo<br>作用：相当于把滚动条滚动到指定的状态(窗口或元素在overflow的情况下)<br>window.scrollTo(0,200);<br> <br>方法：getValue<br>作用：获取tag为textarea, select 或 input这三个元素的value属性值。但select多选状态下取值不支持。<br>&lt;input type=&quot;text&quot; value=&quot;abcd&quot; id=&quot;myInput&quot;/&gt;<br>var v = $('myInput').getValue();<br> alert(v);             //alert  &quot;abcd&quot;<br> <br>方法：getSizze<br>作用：获取元素对象当前的size/scoll值<br>返回值格式如下：<br>{<br>   'scroll': {'x': 100,  'y': 100},<br>   'size':   {'x': 200,  'y': 400},<br>   'scrollSize': {'x': 300,  'y': 500}<br>  }<br>$('myElement').getSize();<br> <br>方法：getPosition<br>作用：获取元素的offset位置<br>返回值格式：<br>{x: 100, y:500}<br>$('element').getPosition();<br> <br>方法：getTop<br>作用：相当与getPosition返回的y值<br>$('element').getTop();<br> <br>方法：getLeft<br>作用：相当与getPosition返回的x值<br>$('element').getLeft();<br> <br>方法：getCoordinates<br>作用：获取元素的当前width, height, left, right, top, bottom值<br>返回值格式：<br>{<br>   width:  200,<br>   height: 300,<br>   left:       100,<br>   top:       50,<br>   right:     300,<br>   bottom: 350<br>  }<br>var myValues = $('myElement').getCoordinates();<br> <br> <br>mootools提供了一个“垃圾收集器”Garbage。<br>一般情况下，使用$方法获取到的对象都会被这个“垃圾收集器”登记下来，然后在窗体关闭(unload)的时候，销毁这些登记过的对象。也可以调用Garbage.collect方法来登记，然后在你必要的时候调用Garbage.trash方法来销毁。<br><br> <!--v:3.2--> ]]></description>
<category><![CDATA[个人日记]]></category>
<author><![CDATA[287743295@qq.com(⊕紫雨)]]></author>
<comments>http://287743295.qzone.qq.com/blog/1219111625#comment</comments>
<qz:effect>512</qz:effect>
<pubDate>Tue, 19 Aug 2008 02:07:05 GMT</pubDate>
<guid>http://287743295.qzone.qq.com/blog/1219111625</guid>
</item>

<item>
<title><![CDATA[mootools2]]></title>
<link>http://287743295.qzone.qq.com/blog/1219111583</link>
<description><![CDATA[ mootools【二】 - Array篇 <br>由于JavaScript1.5对Array增加了一些比较好用的方法，如forEach,filter,map,every,som,indexOf，但是在还不支持JavaScript1.5的浏览器里是不能用得，所以，mootools它通过扩展Array来使其实现对这些方法的支持:<br>---------------------------------Array.js---------------------------------<br>Array对象的forEach方法<br>原型：Array.prototype.forEach(callBack: Function, thisObject: Object) <br>作用：对数组进行迭代操作，它有两个参数，第一个参数callBack是每次迭代所执行的函数，第二个参数thisObject可选，是要绑定到迭代执行的函数上的对象(也就是函数callBack中的this所指向的对象)<br> //用法一<br> var arr = [1,2,3,4,5,6];<br>  arr.forEach(function(e){<br>      alert(e);<br> });<br> <br> //用法二<br> var arr = [1,2,3,4,5,6];<br> var obj = &quot;hello!&quot;;<br>  arr.forEach(function(e){<br>     alert(e+'--'+this);<br> },obj);<br> <br> //用法三<br>  function putElt(element, index, array) {<br>     document.write(&quot;pos [&quot; + index + &quot;] in array (&quot; + array + &quot;) is &quot; + element + '&lt;br&gt;');<br> }<br> [2, 5, 9].forEach(putElt);<br> <br>Array对象的filter方法<br>原型：Array.prototype.filter(callBack: Function, thisObject: Object) <br>作用：迭代数组，每个元素作为参数执行callBack方法，由callBack方法作为数据过滤网，最后返回过滤后的一个数组<br>  var result = [1,2,3,4,5].filter(function(e){<br>       return e &gt; 3;<br> });<br> alert(result);   //结果为4,5<br> <br>Array对象的map方法：<br>原型：Array.prototype.map(callBack: Function, thisObject: Object) <br>作用：迭代数组，每个元素作为参数执行callBack方法，由callBack方法对每个元素进行处理，最后返回处理后的一个数组<br>  var result = [1,2,3,4,5].map(function(e){<br>       return e + 'px';<br> });<br> alert(result);  //结果为1px,2px,3px,4px,5px<br> <br>Array对象的every方法：<br>原型：Array.prototype.every(callBack: Function, thisObject: Object) <br>作用：它的意思就是：是否数组中的每个元素都通过了callBack的处理？如果是，则返回true,如果有一个不是，则立马返回false<br>  var result = [1,2,3,4,5].every(function(e){<br>       return e &gt; 3;<br> });<br> alert(result);    //返回false<br> <br>Array对象的some方法：<br>原型：Array.prototype.some(callBack: Function, thisObject: Object) <br>作用：它的意思就是：是否数组中的有元素通过了callBack的处理？如果有，则立马返回true,如果一个都没有，则返回false<br>  var result = [1,2,3,4,5].every(function(e){<br>       return e &gt; 3;<br> });<br> alert(result);    //返回true<br> <br>Array对象的indexOf方法：<br>原型：indexOf(searchElement: Object, fromIndex: Number) <br>作用：在数组中查找是否含有指定对象,如果有，返回对象所在的索引,否则返回-1；第二个参数是可选参数，如果指定的话，比如指定3，则表示从数组的第4个元素开始查找；默认从第0个元素开始查找。<br>var x1 = [1,2,3,4,5].indexOf(2);     //结果为1<br>var x2 = [1,2,3,4,5].indexOf(2,3);  //结果为-1<br> <br>----------------------以下的方法是mootools提供的Array的专有扩展，和JavaScript标准无关--------------------------<br>each<br>作用：它的用法和作用与forEach一模一样，参看上文的forEach<br> <br>copy<br>作用：复制数组元素到新的数组中；默认是全部复制，如果指定了开始索引和长度的话，则可以按指定形式复制<br>var a = [1,2,3,4,5,6];<br>var b1 = a.copy();         //[1,2,3,4,5,6]<br>var b2 = a.copy(2,2);   //[3,4]<br> <br>remove<br>作用：删除数组中指定值的元素<br>var a = [1,2,2,3,4,5,6];<br>var b = a.remove(4);  //[1,2,2,3,5,6]<br>var c = a.remove(2);  //[1,3,4,5,6]<br> <br>test<br>作用：查找数组中是否有指定的值<br>var a = [1,2,3,4,5,6];<br>var b = a.test(11);      //fasle<br>var c = a.test(2);        //true<br> <br>extend<br>作用：把另一个数组追加到本数组后(不排除相同值的)<br>var a = [1,2,3,4];<br>var b = [1,11,12];<br>a.extend(b);<br>alert(a);             //1,2,3,4,1,11,12<br> <br>associate<br>作用：把另一个数组中的值作为key,本数组中的值做为值，组成一个键值对象(长度为两者中较小的那个)<br>var v = [1,2,3,4,5];<br>var k = ['one','two','three'];<br>var kv = v.associate(k);<br>alert(kv['one']);               //1<br>var v = [1,2];<br>var k = ['one','two','three'];<br>var kv = v.associate(k);<br>alert(kv['one']);               //1<br>alert(kv['three']);             //undefined<br> <br>$A<br>作用：和Array的copy方法是一样的作用<br>var a = [1,2,3,4];<br>var b = $A(a);           //[1,2,3,4]<br>var c = $A(a,1,2);     //[2,3]<br> <br>$each<br>作用：功能基本和Array的forEach方法相同，官方文档上说可用于非常规数组的迭代，如由getElemntsByTagName调用产生的结果，以及参数数组arguments等。不过管它常规不常规，用起来的形式还是一样的<br>var a = [1,2,3,4];<br>$each(a,function(e){<br>     alert(e);<br>});<br> <br>恩，Array部分终于看好了，自己写的语言表达上感觉有些地方有欠缺，呵呵。。。<br><br>  mootools【三】- String篇 <br>String大概是我们使用频率最高的数据类型了，在各个javascript框架中，都或多或少的对String进行了扩展，来提供一些十分方便的方法来处理日常应用。mootools也不例外，String.js中主要实现了这些对String的扩展，还稍微带了点对Array和Number的扩展。<br>--------------------------------String.js---------------------------------------<br>//========================以下是对String的扩展========================<br>test<br>作用：对字符串执行正则表达式匹配<br> var x = &quot;Hello,world!&quot;.test('hello');        //false<br> var y = &quot;Hello,world!&quot;.test('hello','i');    //true,'i'是正则表达式参数，表示忽略大小写.注意'g'在这里无效<br> var z = &quot;Hello,world!&quot;.test(/H.*?o/);     //true<br> <br>toInt<br>作用：把字符串转换成整数，如果非数字，则返回NaN<br>var x0 = &quot;1.12&quot;.toInt();         //1<br>var x1 = &quot;1&quot;.toInt();              //1<br>var x2 = &quot;1px&quot;.toInt();          //1<br>var x3 = &quot;10xxx&quot;.toInt();      //10<br>var x3 = &quot;x10xxx&quot;.toInt();     //NaN<br>var x4 = &quot;020&quot;.toInt();         //16<br>var x5 = &quot;0xFF&quot;.toInt();       //255<br> <br>toFloat<br>作用：把字符串转换成浮点数<br>var x0 = &quot;1.12&quot;.toFloat();         //1.12<br> <br>camelCase<br>作用：把以&quot;-&quot;分隔的字符串，如&quot;my-work&quot;，转换成&quot;myWork&quot;这样的形式<br>var x = &quot;my-work&quot;.camelCase();       //myWork<br>var y = &quot;My-Work&quot;.camelCase();       //MyWork<br> <br>hyphenate<br>作用：把形如&quot;myNotePad&quot;形式的字符串，转换成&quot;my-note-pad&quot;这样的形式<br>var x = &quot;myNotePad&quot;.hyphenate();         //my-note-pad<br> <br>capitalize<br>作用：字符串中每个单词的首字母大写<br>var x = &quot;hello world&quot;.capitalize();         //Hello World<br> <br>trim<br>作用：去除字符串首尾的所有空格<br>var x = &quot;           hello world              &quot;.trim();         //“hello word”<br> <br>clean<br>作用：去除字符串中所有多余空格(收尾全部去除，单词之间留一个空格)<br>var x = &quot;           hello                 world             \n\n &quot;.clean();         //“hello word”<br> <br>rgbToHex 和 hexToRgb<br>作用：rgb代表的颜色代码与十六进制表示的颜色代码之间互转<br>&quot;rgb(17,34,51)&quot;.rgbToHex();           //&quot;#112233&quot;<br>&quot;rgba(17,34,51,0)&quot;.rgbToHex();     //&quot;transparent&quot;<br>&quot;rgb(17,34,51)&quot;.rgbToHex(true);   //['11','22','33']<br>&quot;#112233&quot;.hexToRgb();                 //&quot;rgb(17,34,51)&quot;<br>&quot;#112233&quot;.hexToRgb(true);          //[17,34,51]<br> <br>//=====================以下是对Array的扩展========================<br>rgbToHex  和 hexToRgb<br>作用：取数组中的前3个元素，转化成RGB颜色代码或十六进制颜色代码<br>['FF',0,0].hexToRgb();               //rgb(255,0,0)<br>[255,255,0].rgbToHex();          //#ffff00<br> <br>//=====================以下是对Number的扩展========================<br>toInt<br>作用：数字类型的对象转换成整型<br>var n1 = 12.11;<br>var nx = n1.toInt();                 //12<br> <br>toFloat<br>作用：数字类型的对象转换承浮点型<br>var n1 = 12.010;<br>var nx = n1.toFloat();          //12.01<br> <!--v:3.2--> ]]></description>
<category><![CDATA[个人日记]]></category>
<author><![CDATA[287743295@qq.com(⊕紫雨)]]></author>
<comments>http://287743295.qzone.qq.com/blog/1219111583#comment</comments>
<qz:effect>512</qz:effect>
<pubDate>Tue, 19 Aug 2008 02:06:23 GMT</pubDate>
<guid>http://287743295.qzone.qq.com/blog/1219111583</guid>
</item>

<item>
<title><![CDATA[mootools]]></title>
<link>http://287743295.qzone.qq.com/blog/1219111549</link>
<description><![CDATA[mootools【一】- 起步篇 <br>以前一直在用prototype.js，最近发现了mootools,据说也相当不错，它是个纯OO的javascript 框架，所以拿来学习学习，把学习经过记录下来。<br> 粗略看了下，mootools很貌似prototype,所以用过prototype框架的人应该很容易上手的。<br> mootools提供的功能高度模块化，可以根据实际需要来裁剪。<br>它的核心库是Moo.js和Utility.js，Moo.js里包含了实现OO的基础类,Utility.js提供了最常用的工具函数的封装。<br>---------------------------Moo.js-------------------------------------<br>prototype.js里提供了如下形式来创建我们的对象:   <br> <br>var Cat = Class.create();<br>Person.prototype = {<br>    initialize: function(name){<br>       this.name = name;<br>    }<br>};<br>var cat = new Cat ('kitty');<br>alert(cat.name);<br> <br>对应,mootools使用如下形式:<br>var Cat  = new Class({<br>    initialize: function(name){<br>        this.name = name;<br>    }<br>});<br>    <br>var cat = new Cat ('kitty');<br>alert(cat.name);<br>恩，两者看起来很像，不过，好像mootools这种方式更加符合OO的习惯(不过也要看各人喜欢的啦)。<br>Class进行继承,mootools是这样做的:<br> <br>  var Animal = new Class({<br>     initialize: function(name){<br>      this.name = name;<br>    }<br> });<br> <br>  var Cat = Animal.extend({<br>     initialize: function(name,age){<br>      this.parent(name); //调用Animal的initialize方法<br>      this.age = age;<br>    }<br> });<br>是的，相当好用。<br>Class.implement方法从功能上来理解是对已经定义好的类进行扩展,用法如下:<br>  var Person = new Class({<br>      initialize: function(name){<br>         this.name = name;<br>     }<br> });<br> <br>  Person.implement({<br>    initialize: function(name,age){<br>         this.name = name;<br>         this.age = age;<br>     },<br>     <br>  myAction: function(){<br>         alert(this.name+'--'+this.age);<br>     }<br> });<br> <br> var p = new Person('zarknight',24);<br> p.myAction();<br>这和java中的实现接口好像不是一个概念...<br> mootools对Object扩展了一个extend方法,它有两个参数，作用是复制第二个参数对象的所有属性到第一参数对象中去，同名属性将覆盖为第二个参数中的相应属性：<br>  var firstOb = {<br>     'name': 'John',<br>     'lastName': 'Doe'<br> };<br>  var secondOb = {<br>     'age': '20',<br>     'sex': 'male',<br>     'lastName': 'Dorian'<br> };<br> Object.extend(firstOb, secondOb);<br> <br> //firstOb将变成:<br>  {<br>     'name': 'John',<br>     'lastName': 'Dorian',<br>     'age': '20',<br>     'sex': 'male'<br> };<br>---------------------------Moo.js-------------------------------------<br>$type<br>作用：基本上是对typeof的扩展,返回输入参数的类型<br>例子：<br> var x = $type(&quot;abcdefg&quot;);<br>返回值：<br>'element' - DOM<br> 'textnode' - DOM 文本节点<br> 'whitespace' - DOM 空白节点<br> 'array' - 数组<br> 'object' - 对象<br> 'string' - 字符串<br> 'number' - 数字<br> 'boolean' - 布尔型<br> 'function' - 函数<br> false - 如果是未定义或则不是以上列出的类型<br>$chk<br>作用：如果输入参数是数值（包括0）或是对象(不为null或undefined),则返回true,否则返回false<br> var x = $chk(&quot;abcde&quot;);  //true<br> var y = $chk(0);             //true<br> var z = $(null);                //false<br> <br>$pick<br>作用：如果第一个参数对象存在，则返回这个对象；否则返回第二个参数对象<br> var x = $pick(&quot;openfdc&quot;,&quot;zarknight&quot;);  //openfdc<br> var y = $pick(null,&quot;zarknight&quot;);             //zarknight<br>    var z = $pick(1, 2);                                 //1<br> <br>$random<br>作用：产生一个介于(包括)指定的最大范围值和最小范围值之间的随机整数<br> var x = $random(1,100);   //产生一个1~100之间的随机整数<br> <br>$clear<br>作用：其实就是clearTimeout和clearInterval都调用一遍<br> var timer1 = setInterval(&quot;abc()&quot;,1000);<br> timer1 = $clear(timer1);<br> <br> var timer2 = aFunc.delay(1000);  //delay是mootools对Function的扩展,具体用法看mootools文档或我的后文...<br> timer2 = $clear(timer2);<br>另外，mootools往window对象里摆了这么些属性,用来作为检测浏览器类型的工具：<br>window.ie<br>window.ie6<br>window.ie7<br>window.khtml<br>window.gecko<br> <br> <br><br> <!--v:3.2--> ]]></description>
<category><![CDATA[个人日记]]></category>
<author><![CDATA[287743295@qq.com(⊕紫雨)]]></author>
<comments>http://287743295.qzone.qq.com/blog/1219111549#comment</comments>
<qz:effect>512</qz:effect>
<pubDate>Tue, 19 Aug 2008 02:05:49 GMT</pubDate>
<guid>http://287743295.qzone.qq.com/blog/1219111549</guid>
</item>

<item>
<title><![CDATA[变态房东记2]]></title>
<link>http://287743295.qzone.qq.com/blog/1214537234</link>
<description><![CDATA[<span style="color:#996600;font-size:16px;line-height:1.8em;"><span style="font-weight:bold"><wbr />   很久没有写日志了，但是我还是想把我一年的租房经历完整的记录下来，以提醒我自己以后一定要保护好自己，这个世界既然没有人来保护我，我就要自己好好保护我自己----人不犯我，我不犯人，人若犯我，我必犯人。 </span><wbr /></span><wbr /><br><br><span style="color:#996600;font-size:16px;line-height:1.8em;"><span style="font-weight:bold"><wbr />   13号我去把煤气灶给换了，很快3天过去了，变态的还是没有音讯还我们钱，我就打电话给他，问他什么时候把钱给我们，他直接说空调二氧化碳过滤网少了，洗衣机坏了（洗衣机从来没有用过，我们住进去之后自己买了一个），他让我修这些，我不同意，告诉他这是不可能的，19号，我们打电话给他说要跟他谈谈，他说他会尽量10点钟之前赶到，但是因为家里有病人，很可能会10点之后到，到了10点钟，他就打电话让我们修洗衣机，说只要修完洗衣机他就过来，把押金直接拿回来，当时阿青叫了个上海女人帮我们谈判，上海女人就答应了修洗衣机，反过来劝我们说修完他就把钱拿给你们，你们也不要给他扯下去了，这样也没意思，想想也算了，就打电话给修洗衣机的，让他过来修，修完给他电话，再也打不通，妈的，又被骗了，我们没办法，只好回家。 </span><wbr /></span><wbr /><br><span style="color:#996600;font-size:16px;line-height:1.8em;"><span style="font-weight:bold"><wbr />   很快21号晚上他打电话给我说，把押金还给我们，我很开心，问什么时候，然后他就说：因为你们跟我扯来扯去的，我房子还没租出去，这段时间空出来的房租应该付给我，我当时给气死了，我说：如果你这样的话，我们只有求助于法律，大家通过法律来解决这件事，他直接威胁我说，我不但相信法律，我还相信很多法律以外的东西，我当时就挂了电话，第二天中午的时候，打电话给我说，你半小时到这，我把钱拿给你，我们当时以为他怕了，就四个人一起过去，德科走在第一个，他见德科的第一句话就是：你怎么来了。自此我们才知道他的阴谋，他以为半个小时以内到就我自己来，那样他就说什么我听什么了，再来说下他的打扮，黑色墨镜，黑色夹克，黑色裤子，黑色鞋子，叼了根烟，像电影里的黑社会老大（现在想想这种sb好幼稚），他一看我们四个去可能计划乱了，就一直给那个洗衣机灌水，不停的走来走去，我们就问他，还钱，他开话了，说过道的灯坏了，应该我们赔，妈的，9号验收的时候还是好的，难道他一年不还我们钱，我们就要一年帮他们家所有东西保修啊，我们当然不同意，到最后又谈不拢，我当时一直想着通过法律途径解决，就告诉他法庭上见，走了（现在想想这次的见面是我最后悔的一次，我们四个人去应该关上门扁他一顿，然后报警，总之有些事情也说不清）。 </span><wbr /></span><wbr /><br><span style="color:#996600;font-size:16px;line-height:1.8em;"><span style="font-weight:bold"><wbr />    23号去找居委会，他倒是很出名，我还没报他名字，居委会大妈就说这个钱你们应该拿不回来了，并且帮我分析，说他这人只能进不能出的，都出名了，你们几个外地的，还想从他手里把钱要回来，不太可能，再说房产是他爸的，不是他的，你们要告的话程序走下来也很麻烦，并且不一定赢，我说那你还是帮我调节下吧，他就打电话给变态的，变态的直接讲让他们去告吧，钱我这没有，居委会大妈就把结果告诉我，并且还一直吓唬我，我当时都吓哭了，最后居委会大妈就问我3000可以吗，我哭着说，可以，他就打电话给变态的，说3000可以吗，变态的说让我打电话给他说，什么都好说，我就打电话给变态的，变态说;你和你男朋友分手没？我：分不分和你有关系吗？变态：既然和我没关系，那我们没什么谈的，但是你要想清楚，这个社会不止有共产党，还有共产党以外的东西，然后就挂电话了，我既然去了居委会就让居委会给我开了证明，证明他不愿意调解，哭着走了（现在想想，他妈的什么居委会啊，就会推卸责任，还把我吓哭），我接下来去了律师事务所，律师明确告诉我，这种案子他们不会接的，数额太小了，我又哭了一场。</span><wbr /></span><wbr /> <br><span style="color:#996600;font-size:16px;line-height:1.8em;"><span style="font-weight:bold"><wbr />    之后我去找了趟法院，法院说要起诉的话必须合同上的人都是原告才可以，想想时培旭，谈林涛他们都走了，再作为原告是不可能的了，看来此路不通，之后又开始了扯来扯去，期间找了李俊芳帮忙调和，未果。</span><wbr /></span><wbr /> <br><span style="color:#996600;font-size:16px;line-height:1.8em;"><span style="font-weight:bold"><wbr />    很快过完了五一，我们实在没办法了，对付这种垃圾无赖，我们显的是那么的无能为力，我想到了报社，打了两天热线终于被我打通了，5月13号有记者联系了我，并且问了相关的情况，说要去证实事件的真实性，我给了记者居委会的电话和变态的电话，没一会，变态的就打电话到公司骂我，我一听他骂我，就没有听下去，挂了电话，他又发短信接着骂，所说的每一句，我这辈子第一次被人这样骂，我当时在公司哭了，我不知道是委屈，还是害怕，之后我把这条短信转发给我男朋友，他竟然告诉我：别理他，没事的，就完了，下了班我去找我男朋友，本想他最起码会和我一起去变态家，不管怎么说也要去骂一场，但是他觉得短信没什么，他想骂就让他骂吧。后来想想像我男朋友这种男人不如做女人死了算了。</span><wbr /></span><wbr /> <br><span style="color:#996600;font-size:16px;line-height:1.8em;"><span style="font-weight:bold"><wbr />    自从他发完短信之后我再也没有采取进一步的措施，我把所有的东西给了猫猫处理，这些钱已经不重要了，这口气也不重要了，至此我心灵受到的创伤将是很多人都无法理解的，别人讲我遇人不淑，在我看来，我不止遇到的房东不淑，我遇到的男朋友也和他形成了搭档。</span><wbr /></span><wbr /> <br><span style="color:#996600;font-size:16px;line-height:1.8em;"><span style="font-weight:bold"><wbr />   事件结尾：后来钱是要回来了，找了要债公司，钱也从变态那转移到了要债公司那，至此事件结束。</span><wbr /></span><wbr /> <br><br><br><span style="color:#996600;font-size:16px;line-height:1.8em;"><span style="font-weight:bold"><wbr />事件总结：</span><wbr /></span><wbr /> <br><span style="color:#996600;font-size:16px;line-height:1.8em;"><span style="font-weight:bold"><wbr />1.关于整个事情的过程我们内部人不够团结，太心慈手软，有些时候该出手的时候就出手，有些事情还是有必要用武力的。</span><wbr /></span><wbr /> <br><span style="color:#996600;font-size:16px;line-height:1.8em;"><span style="font-weight:bold"><wbr />2.唯一有个男的出来说话，又是好欺负类型的，这助长了变态房东的嚣张气焰。</span><wbr /></span><wbr /> <br><span style="color:#996600;font-size:16px;line-height:1.8em;"><span style="font-weight:bold"><wbr />3.我本人管事太多，很多事情其实都会有他的规律，钱不给就不要好了，我自己也没多少，又何必弄到最后伤痕累累</span><wbr /></span><wbr /> <br><span style="color:#996600;font-size:16px;line-height:1.8em;"><span style="font-weight:bold"><wbr />4.自己太年轻，不懂得厉害得失，才最终留下永恒的心里阴影。</span><wbr /></span><wbr /><br> <br> <br> <br>这件事已经告一段落，我只想尽快忘掉这件事，在这里记下事情的经过，感谢在这个过程中帮过我的人，也希望大家尽量不要在我面前提起这件事，这毕竟是我人生的败笔。 <!--v:3.2--> ]]></description>
<category><![CDATA[个人日记]]></category>
<author><![CDATA[287743295@qq.com(⊕紫雨)]]></author>
<comments>http://287743295.qzone.qq.com/blog/1214537234#comment</comments>
<qz:effect>512</qz:effect>
<pubDate>Fri, 27 Jun 2008 03:27:14 GMT</pubDate>
<guid>http://287743295.qzone.qq.com/blog/1214537234</guid>
</item>

<item>
<title><![CDATA[变态房东记]]></title>
<link>http://287743295.qzone.qq.com/blog/1211163196</link>
<description><![CDATA[  <br>此下是我到上海一年的租房经历，借此提醒广大租房者，租房时一定要看清房东，签合同时一定要仔细看看有没有自己的权益，看清每样东西，遇到房东欺负你们的时候一定不能软弱，要不然房东会欺负上瘾的，你越好说话他越欺负你，这--------就是传说中贱人。<br>  一  找房<br>07年3月初到上海一切都是新的，就随便在四平路与新港路的交叉口找了个群租房住下了，作为学校还没毕业的大四学生就可以出来工作，心里还是有点骄傲的，但是接下来的事情竟然折磨了我一年，我和同宿舍毛毛平平静静的租了一个月的群租房之后就觉得地方太小了，正好也发工资了，并且同事也想换房子，所以我们决定找个大点的地方住，我们就开始在网上找房子，就找到了我现在的这个房子当然还有房东-----四平路与天宝路附近的一个3房，房东是一个四十多岁的未婚老男人（这么老不结婚，不谈恋爱，肯定大脑有问题，当时竟然没想到）。<br>二  签合同<br>刚出来的确经验太少了，我们在网上看到的标价是1800，看房的时候房东却说他的是2200，我们当时是在群租房里住，地方实在太小了，忽然找了个三室的，房间好大，顿时飘飘然了，接下来我们就砍价，最终我们2000成交了，当时房子他们还没理完，我们就等他们理，顺便这段时间把我们的群租房转租了出去（现在想想我们的群租房的房东还是蛮好的，允许我们转租，并且住的一个月非常平静），然后我们就搬进来了现在的3室，房东老太太年纪大了，理的很慢，我们都搬进来了，他们还在理，我们就告诉他，把他们有用的理完就行了，卫生什么的留给我们打扫，别因为理房子累坏了身体，终于有一天他告诉我们说他们理完了，接下来我们就开始了打扫卫生，弄了两天，终于干净了，顺便说一下，这时候我们已经住进来大概有一个礼拜了，但是还没签合同，房间的电视开了一次就再也没有打开过，然后大概4月20几号我们房东忽然一天晚上说要签合同，也没提前给我通知，当时公司正在赶活，老板不放人，怎么办，我就没回去签，有我的同事在家就把这个合同给签了，算4月10号入住的，合同完全是霸王合同，合同说由于房子已经很旧了，房屋内的所有设施也均以超过保修期，但在乙方居住期间若有任何设施损坏，均有乙方来负责修缮维护，甲方不负责任何责任，房屋内的东西更是搞笑到了极点，什么房间内有几只灯泡啊都在我们的租房合同中，并且他们放了好多的他们用不到的东西到这个房子里，说让乙方租房期间暂时保管，如有遗失，有乙方负责，这些破烂东西几乎占了我们的半间房，当时签合同的时候他家电视已经坏掉了，但是我同事竟然没试（这个的确太没经验了），这样电视在合同中就是完好无损的，我回头就跟房东讲电视已经坏掉了，但是他讲我们住进来的时候打开过一次，签合同的时候没讲，就只能我们修，算了，我们只有认栽了，听说交三押一，交二押一的多，从来没听过这么烂的房子要我们交一押二的吧，我们就是交一押二，变态吧。并且在长达10几页的合同里我们是没有一点权益的，所有的权益权利都是房东的。我随后会贴出我们的租房合同。<br>三 交房租<br>接下来就是每月交房租了，当初他们签合同的时候讲的是每两个月交一次，但是鉴于当时刚从学校出来都是从家里拿钱来用的我的同事及同学都觉得负担太重，所以我就跟房东协商能不能改成一个月一交，这样我们也是提前交，只不过多打几次而已，但是我的房东就觉得一个月一交他亏了很多很多，我们扯了很多天，每天都讲同样的话，一通话就1个多小时，最后我都快被整疯了，他还是坚决不同意（其实我到现在还没想通一个月一交房租和两个月一交房租有什么不同），我们没办法了，就还是两个月一交吧，并且非常变态的是我们提前一个礼拜预交下两个月的房租，但是提前两个礼拜房东都会打电话提醒我房租要交了，把房子打扫干净点，他随时会过来检查的等等，太变态了。<br>四 坏柜子门<br>我们非常小心的用着他们家的各种各样的东西，坐上凳子都不敢乱动，生怕坏掉了，冰箱，空调，风扇都非常小心的用着，但最终还是发生了意外，我同事坐在柜子旁边吃饭，男的吗，坐下去凳子就坏掉了，他摔倒的同时撞到了柜子，把柜子门撞坏了，门上的玻璃也破了，当初我们都吓坏了，这可怎么办啊，我们就赶快打电话给房东啊（因为他说过如果什么东西坏了，我们要第一时间通知他），他当时就说要给他尽快修，修完再打电话给他，他再看过关不过关，我们就赶快抽个礼拜六把他修了，修完他看，说和原来的不是完全一样，怎么怎么的，说镜子一圈应该找什么胶水弄，我们就赶快找师傅弄胶水啊，弄完了他又讲和原来的不一模一样（当时我就想讲你和一年钱还不完全一样呢，什么东西能和他的过去一模一样啊，但当时怕他，就没讲，估计他就是看我们怕他，所以接下来变本加利的欺负我们），我同事终于忍无可忍，要搬走，说不住了，因为租房子的时候是我找的他们，我也只好同意（想想我对任何人都太善良了，我不同意他们又能怎么样我，合同是他们签的，我应该骂他们才对），接下来就跟房东说这个事情，房东讲说，他们走可以，但是要把柜子修好，还有以后房子里的东西坏了或者其他所有的什么事，我就找你，我认了，所以我接下来就是这个烂房子的管家，柜子的事情还是在继续扯，我每天晚上做梦都在跟房东扯这件事，经常梦到他把我从窗户那扔下去，晚上很多时候醒来都是哭的，我不知道我为什么来上海，我不知道这一个房子为什么让我一个女孩子管，可是天亮醒来日子还是要过的，我找人来接替我同事的房间，同时和房东协商柜子，我精疲力竭的时候，我让房东直接找他们，总之他也知道是他们弄坏的，又不是我弄坏的，但是他还是每次打我电话不找我同事，我都快被房东弄疯的时候，他终于说了，想要我同事赔一个新的，并且要和他们一样的实木的，然后扔柜子也要找人抬的钱也要我同事出，算了一下要赔个一千多，我同事不鸟他，房东就每天找我说这个事，我说什么都没用（想想当初好傻啊，要是当初强硬点，他就不敢这样欺负我了），终于我同事找到了房子，要我退他押金，我们也找到了人租他们的房子，就把押金退给他们了，柜子的事情又扯了几次，最终不了了之，但是我的精神已经受到了严重的伤害，我对房东的惧怕也与日俱增。<br>五  换锁<br>又一件事的到来，打破了相对宁静的生活，我们房门的锁坏掉了，我们无奈之下换了把锁，告诉房东之后，房东倒也没讲什么，说换了就换了，要我们把新锁的钥匙给他一把，以方便他来我们这边（顺便说一下，他来我们租下来的房子，从来都是不给我们打招呼的，想来检查就来检查的那种，有一次我同事女朋友在房间睡觉，他不敲门就直接进去，小女孩当时很害怕，回来找我们哭说房东太过分了，竟然不敲门），我们实在是太讨厌他了，就一直拖着没给他新锁的钥匙，因此被他骂了几次，也因此我对他的惧怕也多了几分。<br>六  漏水<br>后来不知道怎么了，估计是谈朋友了吧，所以我们平静了好一段时间，开心没多久，又一件事情发生了，和我同住的那个女孩子洗澡，不知道下水道堵了，水溢到了卫生间外边，我们租的那个房子极差，刚溢出去，下面的老太婆就找上来了，说漏到他们家水了，我同学赶快关水道歉，楼下老太婆让我们赔他们湿的茅台酒，我们怕了，因为以前楼下老太婆也经常找我们吵架的，比如说他家下水道堵了，我们楼上不能用水是一，还跟我们要捅他家下水道的钱，我们当时也没理他，这次好像不行，我们就跟去他家看到了湿了的茅台酒盒子，我们就道歉，我们讲这个房子太烂了，漏水，我们会跟房东讲的，没想到我们一提到房东，楼下的立马来劲了，大骂我们房东不是人，真是同是天涯沦落人啊，我们也骂，老太婆一看我们也太可怜了，被变态房东折磨成这样，什么茅台酒啊都不跟我们计较了，这时候我清楚了一个道理，原来拥有共同的敌人就是盟友啊，不论你们两者之前有什么样的矛盾，只要敌人有动静，你们都会无缝的联合起来去对付敌人。<br>七  漏电<br>过了十一回来，我们洗澡的时候发现水龙头有电，我们赶快告诉房东，这是一个很严重的问题，说不定那天就会有人触电，让他帮我们修修（因为这种是大工程，所以才找他的，平常电视空调的就我们自己修的），但我们得到的是一顿骂，说漏电自己去修啊，打电话给他，他也不会管的，去找供电局，物业修啊，当时好气啊，不过鉴于太怕他了，还是忍气吞声了，我们就找了物业，供电局的来差，但也没查出什么问题，物业检查还收了我们钱，真是可气，电还是漏的，并且越来越严重，我们洗澡的时候不敢去碰水龙头，就拿牙刷开水，关水，洗澡也不每天洗了（还好是冬天），只想快点结束算了。<br>八  吵架<br>磕磕碰碰的我们挨到了08年2月了，终于看到了结束这段悲惨命运的希望，我们就按合同约定提前两个月告诉他我们不再续约（他早在07年12月底就告诉我说他房子要涨价），令我们没想到的是他立马把他挂到网上去了，当时春节刚过，n多人来上海，我们的合同是4月10号结束，但是2月底的时候都有人来看房子了，并且一直持续不段，我在3月10号的时候终于受不了这种每天有人看房的生活了，就给房东打电话说房子到期还早，租房都挺快的，这么早挂出去，第一不符合我们合同，第二严重影响了我们的生活（因为一旦有人来看房，我们有人在家还好，如果没人在家，他就一个电话打过来，不管我们离家多远，都是命令我们回家，说别人等着看房，最可气的是我过生日，刚点完菜，他就一个电话过来，不管用什么方式，20分钟要到家，因为20分钟后有人来看房，当时我不同意，我男朋友太懦弱了竟然同意了，我的生日就那样被收场了），但是不讲理的房东竟然讲我们没把房门钥匙给他，他没办法进去，影响了他租房，这个责任要我们担，总之跟我扯了一大堆不讲理的道理（这是他最擅长的，讲问题从来不讲怎么办，只绕着问题讲问题，一直把你讲的受不了），老男人的语气强硬的要杀过来，最终我失败了，挂了电话我哭了，因为当时在上班，我哭了好久好久，但是有什么办法，洗了把脸，接着上班，从此我只要一接到房东的电话就想哭（太没用了，就是不知道为什么，可能是因为我已经怕他怕到骨子里了）。<br>九 验房<br>我们好不容易熬到了4月份，找到了新的房子，房子装修很好，什么东西坏了都由房东承担修，房东是东北的很大方的那种，签合同的时候试了所有的东西，合同也不像以前的有9张，只有两张简单的合同，我们在清明（4.5）的时候搬了家，接下来的事情开始和老男人房东要押金，他百般刁难我们的时候开始了，我们当初押了4千在他那，怕拿不到，我们就忍着听他刁难，我们把房子里里外外打扫一遍，按最高标准打扫的，就差没帮他粉墙了，6号打扫完我们就预约他来验房，他说他最近不怎么有空，说有空的时候通知我们，最迟到12号下午，10号---12号之间的不跟我们算钱（因为我们的合同上写的是我们4月10号到期），我们就等着他联系我们，昨天也就是四月9号晚上我刚下班到家做好饭，大概8点半，他打电话过来说有人要看他家房子，在楼下，要我拿钥匙去开门给别人看房，看完之后把钥匙给放到信箱里，他有空的时候先验房，如果合格就退押金，不合格就接着弄（顺便说一下我从新租的地方到原先租房的地方要换两趟车还要走好多路，并且昨天晚上阴天刮了很冷很大的风），我就不同意（这是因为白天我跟我同事讲我被欺负的事，他们都给我打气说不要怕他，像他这种上海老男人就欺软怕硬，不怕他，多叫几个人去轮流跟他吵），我讲，如果你去，我就去，你不去你当我是什么啊，1个小时跑过去给别人看房，然后再一个小时回来，亏你想的出来，他讲我男朋友答应他去让别人看房了，我当时好气，挂了电话就打电话给我男朋友，大骂一顿说完分手就挂电话了，刚挂了，鸟房东又打来，问我现在怎么办，我也没办法了，就讲，要是你今天验房我们就过去，最后吵来吵去，他答应过去验房了（后来我男朋友打了几个电话给我，我都没接，闲他太没用了，后来才知道是鸟房东从中间搞的鬼，我男朋友根本没答应去送钥匙，这种变态的人差点就把我们拆散了），但是我不相信，因为他以前经常骗我们，我们在又打了电话确定他去了，这时候男朋友也回来了，我们五个就打车过去了（其中有两个是我们找的壮胆的）。<br>过去之后有人看房，我们就带着看房的和房东进了房间，等别人看完房，房东就开始试空调啊，冰箱啊，电视啊，我们利用这段时间去抄了现在的水，电，煤的表数，把我们该付的算清了，检验完他没发现什么问题，就开始想办法刁难我们了，先是什么空调布啊，什么书啊让我找出来，还好我一直都很小心，他们家所有的东西不管有用的没用的放在那都很清楚，这些我都搞定了，他一看没招了，接着就讲他家的两件什么贵重衣服不见了（大家想想，如果贵重的话他不拿走，还留在我们这儿，并且不在合同中记录啊，然后一年以后说他有贵重衣服在这），看他胡扯，我们就跟他讲道理，但他理都不理（忘了他这种人不讲理了），就一直扯着他所谓的贵重衣服不放，说值多少钱多少钱，我们就讲他胡搅蛮缠才算就此结束，但是接下来就更变本加厉说他的好多古玩不见了（妈啊，亏他想得出来，古玩放到出租房，一年以后才来拿，并且不记在合同中，还是第一次听说），知道他胡扯，我就问他放在那了，他就说放在电视旁边的柜子上了，但是那是我一住进来就放我包和鞋盒的地方，他一看我记得那个地方是放什么的，就说自己可能记错了，可能放到其他地方了，现在不见了问我们怎么办，这种的他还问的出来，简直太过分了，我们五个就齐心协力骂他恶心，想讹人，最后他看这招实在不怎么的，才算收手，接着说煤气灶的一个点不了火了，让我们赔个给他，我就跟他讲所有的东西坏了我负责修，但是不负责赔，那边点不起来火，我当时找了厂家来修，别人看了之后说这种的煤气灶20多年前的，公司早就不生产了，零部件不可能有了，修不了的，来了几个人都说修不了，我们也没办法，当时也跟鸟房东说了这个事，他当时也没讲什么，没想到最后让我赔，我们当然不会赔，就拿合同给他说，但他还是不理会，说又不贵买一个也用不了多少钱（什么东西，既然买一个用不了多少钱，还让我们赔，自己想买就去买呗），最后我们几个的确火了，就骂他，这么老的东西了，还好意思让我们赔，自己还不去看看合同，看到我们已经不是昨天的羔羊，这才算罢。<br>说退我们押金，但是今天过来准备的不充分，家里有病人，没带钱，怎么怎么的，那我们就说，你给我们打个条，说你还没退，别到时候房子也到期了，你又说退了，我们找谁说去啊，刚开始他不愿意，让我们相信他（都这样了，还让我们相信，真恶心），我们不同意，非让他打条，他不得已帮我打了条，说最迟3天就拿押金给我们，终于我们长达4个小时的验房结束了，也已经快12点了，但是还不知道他回去又想什么花招了，不过现在我们也不怕了，大不了我们就报警，和这种变态的人吵完并且吵赢心里好舒服，就觉得希望离我们越来越近，至于押金还与不还，3天后我再来告诉大家。 <!--v:3.2--> ]]></description>
<category><![CDATA[个人日记]]></category>
<author><![CDATA[287743295@qq.com(⊕紫雨)]]></author>
<comments>http://287743295.qzone.qq.com/blog/1211163196#comment</comments>
<qz:effect>512</qz:effect>
<pubDate>Mon, 19 May 2008 02:13:16 GMT</pubDate>
<guid>http://287743295.qzone.qq.com/blog/1211163196</guid>
</item>

<item>
<title><![CDATA[公司大量裁人]]></title>
<link>http://287743295.qzone.qq.com/blog/1204685342</link>
<description><![CDATA[上周五早上一来发现整个公司都是空的，顿时很疑惑，难道今天不上班，但是不对啊，今天是周五，要上班的啊，整个10点钟以前都在疑惑，10点以后答案揭晓，公司要裁人，那是我试用期的最后一天，所以我有点担心，如果我被裁掉的话属于试用不合格还是属于裁掉啊，上午接近12点的时候揭晓，我没有被裁掉，一个70多人的公司一下被裁掉了差不多有50个，我不知道我是幸运儿还是倒霉鬼，因为接下来公司还不知道搬到那去。 <br><br>在这个社会我知道人和人是不一样的，但是有时候不知道差这么多，有时候我想只要我们有能力就一定可以做到我们想要做到的，但可悲的是我们不知道我们要做什么，因为我们害怕失去曾经拥有的，我们没有勇气去闯，去拼，因为我们顾虑的因素太多太多了，就像这次我害怕被裁掉，那是因为什么我自己都不知道，曾经拥有的自信，自负都不存在了，拥有的只有自卑，我不知道社会是怎么发展的，我不知道人老了会是这种感觉，我告诉自己，我可以的，我要自信起来，事实是我成了一个自卑症儿，不知道曾几何时我变成了这样。<br> <br>不知道是可爱还是可悲，呵呵！ <!--v:3.2--> ]]></description>
<category><![CDATA[个人日记]]></category>
<author><![CDATA[287743295@qq.com(⊕紫雨)]]></author>
<comments>http://287743295.qzone.qq.com/blog/1204685342#comment</comments>
<qz:effect>512</qz:effect>
<pubDate>Wed, 05 Mar 2008 02:49:02 GMT</pubDate>
<guid>http://287743295.qzone.qq.com/blog/1204685342</guid>
</item>

<item>
<title><![CDATA[弟弟要结婚]]></title>
<link>http://287743295.qzone.qq.com/blog/1204532778</link>
<description><![CDATA[好久不写日志了，我不是感性的人，很多的时候我认为我都比较理智，但是有时候失控也再所难免。<br>失控的时候我哭过，也骂过很多人，包括我将要结婚的弟弟，老骂他不体谅我们，长不大，时至今日，我才知道其实我们都没有长大，我们应该以一颗宽容的心去整理自己的思绪和情绪，而不是以理想的概念让别人顺着你的思路做事情，这样是不公平的，我弟弟就经常受到这种不公平的待遇，想起来就觉得很对不起他们。<br>如今我弟弟就要结婚了，我只希望他能懂事就好，有想法就好，能按照自己的想法去做就好，作为姐姐太自负，太盛气凌人，希望他能原谅。其实姐姐很垃圾。<br>希望你能够幸福快乐！ <!--v:3.2--> ]]></description>
<category><![CDATA[个人日记]]></category>
<author><![CDATA[287743295@qq.com(⊕紫雨)]]></author>
<comments>http://287743295.qzone.qq.com/blog/1204532778#comment</comments>
<qz:effect>512</qz:effect>
<pubDate>Mon, 03 Mar 2008 08:26:18 GMT</pubDate>
<guid>http://287743295.qzone.qq.com/blog/1204532778</guid>
</item>

</channel>
</rss>

