﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Toez's Web Log-文章分类-Ajax&amp;JavaScript</title><link>http://www.blogjava.net/toez/category/21066.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 09 Apr 2007 03:22:02 GMT</lastBuildDate><pubDate>Mon, 09 Apr 2007 03:22:02 GMT</pubDate><ttl>60</ttl><item><title>YUI-Ext 学习笔记(一)[原]</title><link>http://www.blogjava.net/toez/articles/109331.html</link><dc:creator>Toez</dc:creator><author>Toez</author><pubDate>Mon, 09 Apr 2007 02:27:00 GMT</pubDate><guid>http://www.blogjava.net/toez/articles/109331.html</guid><wfw:comment>http://www.blogjava.net/toez/comments/109331.html</wfw:comment><comments>http://www.blogjava.net/toez/articles/109331.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toez/comments/commentRss/109331.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toez/services/trackbacks/109331.html</trackback:ping><description><![CDATA[　　最近在晚上接触了一个叫做YUI-Ext的一整套Javascript框架, 是由<a href="http://extjs.com/forum/member.php?find=lastposter&amp;t=3993" rel=nofollow><u><font color=#0000ff>jack.slocum</font></u></a>根据Yahoo!的框架扩展而来的, 用了用,感觉还可以, 优缺点都有, 优点就是效果很炫目, 动态换肤, 组件丰富, 缺点就是没有好的可以拖放操作的IDE, 全部都要手写代码, 牵扯比较多的Javascript核心的语法, 必须了解运行机制等, 由于刚刚接触, 了解的还不是很多, 所以写下学习的一些经验, 供自己以后参考.<br><br>　　首先去下载了一个YUI-Ext的包, 整个包不是很大, 2.5MB, 其中还包括了文档和演示, 现在最新的版本是1.0Beta1.<br>　　下来就要开始实验了, 怎么入手呢? 看着他的演示, 满头雾水, 去网站看看吧, 发现有一个学习的地方(<a class=active title="Learn about Ext JS" href="http://extjs.com/learn-about-ext-javascript-library"><span><u><font color=#0000ff>Learn</font></u></span></a>), 进去之后, 看到了入门的教程, 教你怎么开始一个HelloWorld之类的东西.<br>　　点击<a class=subtitle title="Intro to Ext Tutorial" href="http://extjs.com/tutorial/introduction-ext"><u><font color=#0000ff>Intro to Ext</font></u></a>, 进去之后, 发现还不是从零开始, 首先去下一个<a href="http://extjs.com/downloads/tutorial/introduction-ext/IntroToExt.zip"><u><font color=#0000ff>IntroToExt.zip</font></u></a>, 里面是一个HTML文件, 一个CSS文件和一个JS文件, 我们的HelloWorld就是从这里开始的.<br>　　首先他告诉我们, 不管在HTMl内部还是外部写JS脚本, 都需要把代码放到一个<br>
<div style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: rgb(0,128,128)">1</span>&nbsp;<span style="COLOR: rgb(0,0,0)">Ext.onReady(</span><span style="COLOR: rgb(0,0,255)">function</span><span style="COLOR: rgb(0,0,0)">()&nbsp;{<br></span><span style="COLOR: rgb(0,128,128)">2</span>&nbsp;<span style="COLOR: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">Congratulations!&nbsp;&nbsp;You&nbsp;have&nbsp;Ext&nbsp;configured&nbsp;correctly!</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br></span><span style="COLOR: rgb(0,128,128)">3</span>&nbsp;<span style="COLOR: rgb(0,0,0)">});</span></div>
　　看到了吧, 这个语法奇怪吗? (如果觉得和平时看到的Javascript)不一样, 就去看看Javascript权威指南吧, 上面都介绍的很清楚, 这种语法应该就是所说的字面量方法调用吧 ^_^, 也就是说, 这个会调用Ext类的onReady方法, 传入一个匿名方法, 方法内部就很简单的打出了一个提示框, 恭喜你的Ext已经配置正确了. 然后我们还是在刚才的那个框架上(就是刚才下载的那个IntroToExt.zip)来进行试验. 解压缩以后, 把HTMl文件里的所有引入的JS文件, 都按照路径拷贝进来, 还有CSS文件.<br>　　我们平时要获取一个HTMl文档里的节点, 该怎么做?<br>
<div style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: rgb(0,0,255)">var</span><span style="COLOR: rgb(0,0,0)">&nbsp;myDiv&nbsp;</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">&nbsp;document.getElementById('myDiv');<br></span></div>
　　没错, 这样会工作的很好, 而且现在大多数人也是这样来搞的, 但是这样在页面里一个两个可以, 多了就会很头疼, 于是乎YUI-Ext给我们想到了一个简单的方法.<br>
<div style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: rgb(0,0,0)">Ext.onReady(</span><span style="COLOR: rgb(0,0,255)">function</span><span style="COLOR: rgb(0,0,0)">()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: rgb(0,0,255)">var</span><span style="COLOR: rgb(0,0,0)">&nbsp;myDiv&nbsp;</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">&nbsp;Ext.get('myDiv');<br>});</span></div>
　　简单吧(如果用Prototype.js里的语法更简单^_^).这样就可以得到一个id为myDiv的元素, 然后把他的引用赋值给变量myDiv, 这以后, 你就可以对这个div进行操作了, 比如:<br>
<div style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: rgb(0,0,0)">myDiv.highlight();</span><span style="COLOR: rgb(0,128,0)">//</span><span style="COLOR: rgb(0,128,0)"> 这个元素的背景色会从高亮的黄色渐渐淡出.</span><span style="COLOR: rgb(0,128,0)"><br></span><span style="COLOR: rgb(0,0,0)">myDiv.addClass('red');</span><span style="COLOR: rgb(0,128,0)">//</span><span style="COLOR: rgb(0,128,0)"> 加入一个自定义的CSS样式类 (在 ExtStart.css 里面定义)</span><span style="COLOR: rgb(0,128,0)"><br></span><span style="COLOR: rgb(0,0,0)">myDiv.center();</span><span style="COLOR: rgb(0,128,0)">//</span><span style="COLOR: rgb(0,128,0)"> 在浏览器里居中这个元素</span><span style="COLOR: rgb(0,128,0)"><br></span><span style="COLOR: rgb(0,0,0)">myDiv.setOpacity(.</span><span style="COLOR: rgb(0,0,0)">25</span><span style="COLOR: rgb(0,0,0)">);</span><span style="COLOR: rgb(0,128,0)">//</span><span style="COLOR: rgb(0,128,0)"> 给这个元素加上25%的半透明效果</span></div>
　　现在我们知道怎样通过元素的ID来选择一个元素, 下面我们看看怎么选择一批元素.<br>
<div style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: rgb(0,0,0)">Ext.select('p').highlight();</span></div>
　　高亮所有标签为P的元素. 通过这个例子你就可以看到, 我们来选择页面上的一批元素有多么简单, Ext为我们提供了一个接口, 通过这个接口我们可以来获取一批想要的元素, 并为他们设置属性, 不用循环, 不用遍历每一个元素.仅仅这些, 还不够, Javascript是用事件来驱动的, 我们呢, 就来看看怎样响应一个事件<br>
<div style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: rgb(0,0,0)">Ext.onReady(</span><span style="COLOR: rgb(0,0,255)">function</span><span style="COLOR: rgb(0,0,0)">()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;Ext.get('myButton').on('click',&nbsp;</span><span style="COLOR: rgb(0,0,255)">function</span><span style="COLOR: rgb(0,0,0)">(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">You&nbsp;clicked&nbsp;the&nbsp;button</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br>&nbsp;&nbsp;&nbsp;&nbsp;});<br>});</span></div>
　　这样就为页面里ID为myButton的按钮加上了一个click事件, 触发这个时间以后会弹出一个提示框. 嘿嘿, 有没有发现, 我们不用再在页面里的元素上, 写上一个 onclick='showMessage', 然后在去JS里面, 写上一个showMessage函数了. 我们再来给所有的P标签都加上单击事件, 方法同上<br>
<div style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: rgb(0,0,0)">Ext.onReady(</span><span style="COLOR: rgb(0,0,255)">function</span><span style="COLOR: rgb(0,0,0)">()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;Ext.select('p').on('click',&nbsp;</span><span style="COLOR: rgb(0,0,255)">function</span><span style="COLOR: rgb(0,0,0)">()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">You&nbsp;clicked&nbsp;a&nbsp;paragraph</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br>&nbsp;&nbsp;&nbsp;&nbsp;});<br>});</span></div>
　　通过上面两个例子, 我们可以看到, 我们可以把一个事件处理用很简单的方式定义在一行里, 不用给出函数名称, 只写上函数体, 就是所谓的匿名函数, 同样我们也可以在另外的地方写出一个函数, 然后把函数赋值给一个变量, 我们再在这里来使用它.<br>
<div style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: rgb(0,0,0)">Ext.onReady(</span><span style="COLOR: rgb(0,0,255)">function</span><span style="COLOR: rgb(0,0,0)">()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: rgb(0,0,255)">var</span><span style="COLOR: rgb(0,0,0)">&nbsp;paragraphClicked&nbsp;</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">&nbsp;</span><span style="COLOR: rgb(0,0,255)">function</span><span style="COLOR: rgb(0,0,0)">()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">You&nbsp;clicked&nbsp;a&nbsp;paragraph</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;Ext.select('p').on('click',&nbsp;paragraphClicked);<br>});</span></div>
　　这次我们先实现了一个函数, 然后赋值给paragraphClicked, 在事件调用的时候我们把这个句柄传了进去, 这样也可以实现事件的相应^_^.我们再来看看他还能干什么.<br>
<div style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: rgb(0,0,0)">Ext.onReady(</span><span style="COLOR: rgb(0,0,255)">function</span><span style="COLOR: rgb(0,0,0)">()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: rgb(0,0,255)">var</span><span style="COLOR: rgb(0,0,0)">&nbsp;paragraphClicked&nbsp;</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">&nbsp;</span><span style="COLOR: rgb(0,0,255)">function</span><span style="COLOR: rgb(0,0,0)">(e)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var paragraph = Ext.get(e.target);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; paragraph.highlight();<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;Ext.select('p').on('click',&nbsp;paragraphClicked);<br>});</span></div>
　　在所有的P标签上单击的时候, 都会高亮这个段落, 然后在淡出, 酷吧..下面我们再来看看更酷的, 消息框的使用.我们在上面的高亮语句下面再加上几句<br>
<div style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: rgb(0,0,255)">var</span><span style="COLOR: rgb(0,0,0)">&nbsp;paragraph&nbsp;</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">&nbsp;Ext.get(e.target);<br>&nbsp;&nbsp;&nbsp;&nbsp;paragraph.highlight();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;Ext.MessageBox.show({<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:&nbsp;'Paragraph&nbsp;Clicked',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg:&nbsp;paragraph.dom.innerHTML,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:</span><span style="COLOR: rgb(0,0,0)">400</span><span style="COLOR: rgb(0,0,0)">,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buttons:&nbsp;Ext.MessageBox.OK,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;animEl:&nbsp;paragraph<br>&nbsp;&nbsp;&nbsp;&nbsp;});</span></div>
　　再次点击一下页面中的段落标签, 看看会有什么效果?? 简直太帅了, 我们看到了一个消息框, 几乎是半透明的, 里面填充了我们段落中的文字, 在关闭消息框的时候, 还会出现那种附着效果, 帅成鹰了..主要就是最后那个属性的使用. animEl: paragraph, 这个属性可以设置附着效果会附着到哪个元素上, 我们选择了触发时间的那个段落.看到这里, 怎么样, 激动了吧, 嘿嘿,我也挺激动的.后面还有Ajax消息的相应, 我们改天再来继续学习吧..
<img src ="http://www.blogjava.net/toez/aggbug/109331.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toez/" target="_blank">Toez</a> 2007-04-09 10:27 <a href="http://www.blogjava.net/toez/articles/109331.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>