<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>潘魏增 &#187; JavaScript</title>
	<atom:link href="http://panweizeng.com/archives/category/learning/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://panweizeng.com</link>
	<description>活在回忆里,细数时间下过的蛋.</description>
	<lastBuildDate>Sun, 29 Aug 2010 17:03:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>javascript获取正则中的子匹配</title>
		<link>http://panweizeng.com/archives/592</link>
		<comments>http://panweizeng.com/archives/592#comments</comments>
		<pubDate>Fri, 27 Mar 2009 13:54:23 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=592</guid>
		<description><![CDATA[昨天帮朋友处理一段文本正好用到了这个，记录一下。 var str = '&#60;a href=&#34;http://google.com&#34; target=&#34;_blank&#34;&#62;google&#60;/a&#62;123&#60;a title=&#34;百度&#34; href=&#34;http://baidu.com&#34;&#62;baidu&#60;/a&#62;abce&#60;a href=&#34;http://msn.com&#34; class=&#34;msn&#34;&#62;msn&#60;/a&#62;kkk'; var&#160;reg = /&#60;a.*?href=&#34;([^&#34;]*)&#34;[^&#62;]*&#62;([^&#60;]*)&#60;/a&#62;/i; // *? 非贪婪匹配 var arr = []; while(reg.exec(str)){ &#160; &#160; arr.push({'link':RegExp.$1 , 'text':RegExp.$2}); &#160; &#160; str = RegExp.rightContext;//将str截断 &#160; &#160; reg.lastIndex = 0;//重置下次匹配开始的位置 } console.info(arr); 另外两种正则表达式语法有一些不同，比如说转义。 #正则表达式语法 1 re = /pattern/[flags] #正则表达式语法 2 re = new&#160;RegExp(&#34;pattern&#34;,[&#34;flags&#34;]) &#160; #比如说要匹配&#34;潘魏增(panweizeng)&#34;，同时获取其中的子匹配panweizeng，对应的写法如下 var&#160;reg = /[^(]+(([^)]+))/g; [...]]]></description>
			<content:encoded><![CDATA[<p>昨天帮朋友处理一段文本正好用到了这个，记录一下。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">str</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">&lt;a href=&quot;http://google.com&quot; target=&quot;_blank&quot;&gt;google&lt;/a&gt;123&lt;a title=&quot;百度&quot; href=&quot;http://baidu.com&quot;&gt;baidu&lt;/a&gt;abce&lt;a href=&quot;http://msn.com&quot; class=&quot;msn&quot;&gt;msn&lt;/a&gt;kkk</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">reg</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">/</span><span style="color: Red;">&lt;a.*?href=&quot;([^&quot;]*)&quot;[^&gt;]*&gt;([^&lt;]*)&lt;</span><span style="color: #8b0000;">/</span><span style="color: Blue;">a</span><span style="color: Gray;">&gt;</span><span style="color: #8b0000;">/</span><span style="color: Red;">i; </span><span style="color: #8b0000;">//</span><span style="color: Red;"> *? 非贪婪匹配</span></li>
<li><span style="color: Red;">var arr = [];</span></li>
<li><span style="color: Red;">while(reg.exec(str)){</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; arr.push({'link':RegExp.$1 , 'text':RegExp.$2});</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; str = RegExp.rightContext;</span><span style="color: #8b0000;">//</span><span style="color: Red;">将str截断</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; reg.lastIndex = 0;</span><span style="color: #8b0000;">//</span><span style="color: Red;">重置下次匹配开始的位置</span></li>
<li><span style="color: Red;">}</span></li>
<li><span style="color: Red;">console.info(arr);</span></li></ol></div>
<p>另外两种正则表达式语法有一些不同，比如说转义。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Gray;">#正则表达式语法 </span><span style="color: Maroon;">1</span></li>
<li><span style="color: Blue;">re</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">/</span><span style="color: Red;">pattern</span><span style="color: #8b0000;">/</span><span style="color: Olive;">[</span><span style="color: Blue;">flags</span><span style="color: Olive;">]</span></li>
<li><span style="color: Gray;">#正则表达式语法 </span><span style="color: Maroon;">2</span></li>
<li><span style="color: Blue;">re</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;">&nbsp;</span><span style="color: Teal;">RegExp</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">pattern</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Olive;">[</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">flags</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">])</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">#比如说要匹配</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">潘魏增(panweizeng)</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">，同时获取其中的子匹配</span><span style="color: Blue;">panweizeng</span><span style="color: Gray;">，对应的写法如下</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">reg</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">/</span><span style="color: Red;">[^(]+(([^)]+))</span><span style="color: #8b0000;">/g</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">#这里需要对括号使用两个转义符号</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">reg</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Teal;">RegExp</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">[^\(]+\(([^\)]+)\)</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">g</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">submatch</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">reg</span><span style="color: Gray;">.</span><span style="color: Blue;">exec</span><span style="color: Olive;">(</span><span style="color: Blue;">str</span><span style="color: Olive;">)){</span></li>
<li><span style="color: Gray;">&nbsp;&nbsp; </span><span style="color: Blue;">submatch</span><span style="color: Gray;"> = </span><span style="color: Teal;">RegExp</span><span style="color: Gray;">.$</span><span style="color: Maroon;">1</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;&nbsp; </span><span style="color: Blue;">reg</span><span style="color: Gray;">.</span><span style="color: Blue;">lastIndex</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">console</span><span style="color: Gray;">.</span><span style="color: Blue;">info</span><span style="color: Olive;">(</span><span style="color: Blue;">submatch</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/592/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Firefox插件开发</title>
		<link>http://panweizeng.com/archives/511</link>
		<comments>http://panweizeng.com/archives/511#comments</comments>
		<pubDate>Thu, 19 Feb 2009 14:57:22 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[学习]]></category>
		<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=511</guid>
		<description><![CDATA[今晚技术部交流主题，由于没有写helloworld，所以效果不是很好。Mozilla上面的例程很好，感兴趣可以看一看。 全屏地址（需要google帐号登录）：http://docs.google.com/Present?docid=ajj2j7mmgmtw_457jzbp2gt]]></description>
			<content:encoded><![CDATA[<p>今晚技术部交流主题，由于没有写helloworld，所以效果不是很好。Mozilla上面的<a href="https://developer.mozilla.org/en/Building_an_Extension">例程</a>很好，感兴趣可以看一看。</p>
<p>全屏地址（需要google帐号登录）：<a href="http://docs.google.com/Present?docid=ajj2j7mmgmtw_457jzbp2gt">http://docs.google.com/Present?docid=ajj2j7mmgmtw_457jzbp2gt</a></p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/511/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>YUI实现的Tab切换</title>
		<link>http://panweizeng.com/archives/489</link>
		<comments>http://panweizeng.com/archives/489#comments</comments>
		<pubDate>Sat, 14 Feb 2009 16:19:20 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[tab]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=489</guid>
		<description><![CDATA[YUI自带了一个TabView，虽然很简洁也很强大，但是常常不是想要的那种。Tab切换应该不依赖于HTML结构，能给设计人员和前端开发最大的灵活性。原理：一个tab对象分为控制部分(trigger)，内容部分(sheet)。当trigger被触发时，显示对应的sheet。 以前大树写过一个TabControl的代码，经过两年的使用依旧很考谱，说明当初这个思路还是比较符合实际需求的。我改成了基于YUI的版本，可能看起来更清晰一些。先访问测试页面查看效果，完整javascript代码在这里。 注意：改成实际代码时，请将Tab类放在某个命名空间下，不要直接暴露在全局空间中。 1：使用 以下是常用的html结构，但不限于此。 &#60;ul id=&#34;t&#34;&#62; &#160; &#160; &#160; &#160; &#60;li&#160;id=&#34;t1&#34;&#62;t1&#60;/li&#62; &#160; &#160; &#160; &#160; &#60;li&#160;id=&#34;t2&#34;&#62;t2&#60;/li&#62; &#160; &#160; &#160; &#160; &#60;li&#160;id=&#34;t3&#34;&#62;t3&#60;/li&#62; &#60;/ul&#62; &#60;div&#160;id=&#34;s&#34;&#62; &#160; &#160; &#160; &#160; &#60;div&#160;id=&#34;s1&#34;&#62;s1&#60;/div&#62; &#160; &#160; &#160; &#160; &#60;div&#160;id=&#34;s2&#34;&#62;s2&#60;/div&#62; &#160; &#160; &#160; &#160; &#60;div&#160;id=&#34;s3&#34;&#62;s3&#60;/div&#62; &#60;/div&#62; 对应的javascript代码如下，四种初始化方法都是可以的。 var tab = new Tab($D.get('t').getElementsByTagName('li'), $D.get('s').getElementsByTagName('div'));//1 var&#160;tab = new Tab(['t1','t2', 't3'],['s1','s2', 's3']);//2 var&#160;tab = [...]]]></description>
			<content:encoded><![CDATA[<p>YUI自带了一个<a href="http://developeryahoo.com/yui/tabview/">TabView</a>，虽然很简洁也很强大，但是常常不是想要的那种。Tab切换应该不依赖于HTML结构，能给设计人员和前端开发最大的灵活性。原理：一个tab对象分为控制部分(trigger)，内容部分(sheet)。当trigger被触发时，显示对应的sheet。</p>
<p>以前<a href="http://www.bigtreexu.com">大树</a>写过一个<a href="http://panweizeng.com/images/javascript/TabControl.1.0.U.js">TabControl</a>的代码，经过两年的使用依旧很考谱，说明当初这个思路还是比较符合实际需求的。我改成了基于YUI的版本，可能看起来更清晰一些。先访问<a href="http://panweizeng.com/images/javascript/tab-test.html">测试页面</a>查看效果，完整javascript代码在<a href="http://panweizeng.com/images/javascript/tab.js">这里</a>。</p>
<p>注意：改成实际代码时，请将Tab类放在某个命名空间下，不要直接暴露在全局空间中。</p>
<p>1：使用<br />
以下是常用的html结构，但不限于此。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">ul</span><span style="color: Gray;"> </span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">t</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">li</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">t1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">t1</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">li</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">li</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">t2</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">t2</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">li</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">li</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">t3</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">t3</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">li</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">ul</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">s1</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s2</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">s2</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s3</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">s3</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>对应的javascript代码如下，四种初始化方法都是可以的。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">tab</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Tab</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Blue;">D</span><span style="color: Gray;">.</span><span style="color: Blue;">get</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">t</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementsByTagName</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">li</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">, $</span><span style="color: Blue;">D</span><span style="color: Gray;">.</span><span style="color: Blue;">get</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">s</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementsByTagName</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">div</span><span style="color: #8b0000;">'</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//1</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tab</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Tab</span><span style="color: Olive;">([</span><span style="color: #8b0000;">'</span><span style="color: Red;">t1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">t2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">t3</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">s1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">s2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">s3</span><span style="color: #8b0000;">'</span><span style="color: Olive;">])</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//2</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tab</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Tab</span><span style="color: Olive;">([</span><span style="color: #8b0000;">'</span><span style="color: Red;">t1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">t2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">t3</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">s1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">s2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">s3</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Olive;">{</span><span style="color: Gray;"> </span><span style="color: Blue;">triggerEvent</span><span style="color: Gray;">:</span><span style="color: #8b0000;">'</span><span style="color: Red;">mouseover</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: Blue;">slideEnabled</span><span style="color: Gray;">:</span><span style="color: Green;">true</span><span style="color: Olive;">})</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//3</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tab</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Tab</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//4</span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">add</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">t1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">s1</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">add</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">t2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">s2</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">add</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">t3</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">s3</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">config</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">triggerEvent</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">mouseover</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">config</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">slideEnabled</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Green;">true</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">onShow</span><span style="color: Gray;">.</span><span style="color: Blue;">subscribe</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">t</span><span style="color: Gray;">, </span><span style="color: Blue;">a</span><span style="color: Olive;">){</span><span style="color: Gray;"> ... </span><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">init</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li></ol></div>
<p>2：扩展<br />
已经实现自动切换功能(默认关闭)，另外可以通过onShow自定义事件扩展，也可以在原代码基础上添加更多的自定义事件。</p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/489/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Bespin: 开放式web开发平台</title>
		<link>http://panweizeng.com/archives/472</link>
		<comments>http://panweizeng.com/archives/472#comments</comments>
		<pubDate>Fri, 13 Feb 2009 16:31:24 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[bespin]]></category>
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=472</guid>
		<description><![CDATA[Bespin是Mozilla Labs中推出的一个开放、可扩展的web-based框架，旨在提高开发者生产力和用户体验，并促进开放标准的推广。框架中的代码编辑工具里面采用了HTML5的相关技术。同时，Mozilla的团队还释出一个实验性的原型版本，里面演示了Bespin的若干特性。 Bespin特点将会是简单易用、实时协作、集成命令行工具（是的，和vi/emacs一样）、可扩展和本地部署、快速编辑和随时随地接入。将来还可以直接导入代码库到项目中。 Bespin真正的目标是什么呢？会是基于web的加强版Dreamweaver吗？]]></description>
			<content:encoded><![CDATA[<p><a href="https://bespin.mozilla.com/"><img src="http://panweizeng.com/images/article/mozilla-bespin-logo.gif" alt="bespin" class="title" /></a><a href="http://labs.mozilla.com/2009/02/introducing-bespin/">Bespin</a>是Mozilla Labs中推出的一个开放、可扩展的web-based框架，旨在提高开发者生产力和用户体验，并促进开放标准的推广。框架中的代码编辑工具里面采用了HTML5的相关技术。同时，Mozilla的团队还释出一个<a href="https://bespin.mozilla.com/">实验性的原型版本</a>，里面演示了Bespin的若干特性。</p>
<p>Bespin特点将会是简单易用、实时协作、集成命令行工具（是的，和vi/emacs一样）、可扩展和本地部署、快速编辑和随时随地接入。将来还可以直接导入代码库到项目中。</p>
<p>Bespin真正的目标是什么呢？会是基于web的加强版Dreamweaver吗？</p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/472/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>前端工程师的救命稻草</title>
		<link>http://panweizeng.com/archives/455</link>
		<comments>http://panweizeng.com/archives/455#comments</comments>
		<pubDate>Thu, 12 Feb 2009 16:18:41 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[学习]]></category>
		<category><![CDATA[前端工程师]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=455</guid>
		<description><![CDATA[1. css中的zoom:1。zoom:1在ie中会触发元素的hasLayout属性，能解决80%的ie布局bug。 .div_name { *zoom:1; } 在javascript操作DOM和调整布局时也可以使用reflow函数，如下： function reflow(){&#160; &#160; &#160; document.body.style.zoom = 1.1; &#160; &#160; document.body.style.zoom = ''; } hasLayout的介绍见《On having layout》。 2.javascript中的setTimeout大法。具体就是： function dosomething(){...} window.setTimeout(function(){&#160;dosomething(); }, 0); 这个在Javascript对DOM节点操作时很有用，能解决一些奇怪的问题。具体解释见《认识延迟时间为 0 的 setTimeout》。]]></description>
			<content:encoded><![CDATA[<p>1. css中的zoom:1。zoom:1在ie中会触发元素的hasLayout属性，能解决80%的ie布局bug。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Gray;">.</span><span style="color: Blue;">div_name</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;"> *</span><span style="color: Blue;">zoom</span><span style="color: Gray;">:</span><span style="color: Maroon;">1</span><span style="color: Gray;">; </span><span style="color: Olive;">}</span></li></ol></div>
<p>在javascript操作DOM和调整布局时也可以使用reflow函数，如下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">reflow</span><span style="color: Olive;">(){</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Teal;">document</span><span style="color: Gray;">.</span><span style="color: Blue;">body</span><span style="color: Gray;">.</span><span style="color: Blue;">style</span><span style="color: Gray;">.</span><span style="color: Blue;">zoom</span><span style="color: Gray;"> = </span><span style="color: Maroon;">1.1</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Teal;">document</span><span style="color: Gray;">.</span><span style="color: Blue;">body</span><span style="color: Gray;">.</span><span style="color: Blue;">style</span><span style="color: Gray;">.</span><span style="color: Blue;">zoom</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">''</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>hasLayout的介绍见《<a href="http://www.satzansatz.de/cssd/onhavinglayout.html">On having layout</a>》。</p>
<p>2.javascript中的setTimeout大法。具体就是：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">dosomething</span><span style="color: Olive;">(){</span><span style="color: Gray;">...</span><span style="color: Olive;">}</span></li>
<li><span style="color: Teal;">window</span><span style="color: Gray;">.</span><span style="color: Blue;">setTimeout</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">dosomething</span><span style="color: Olive;">()</span><span style="color: Gray;">; </span><span style="color: Olive;">}</span><span style="color: Gray;">, </span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li></ol></div>
<p>这个在Javascript对DOM节点操作时很有用，能解决一些奇怪的问题。具体解释见《<a href="http://realazy.org/blog/2008/03/29/understand-0-settimeout/">认识延迟时间为 0 的 setTimeout</a>》。</p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/455/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>基于YUI的封装开发</title>
		<link>http://panweizeng.com/archives/337</link>
		<comments>http://panweizeng.com/archives/337#comments</comments>
		<pubDate>Tue, 03 Feb 2009 15:32:47 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=337</guid>
		<description><![CDATA[这是去年我在一次公司内部讨论会上的交流主题，相关ppt和样例代码在这里下载。 YUI是Yahoo的前端开发框架，它的优点是代码清晰（尽管代码量不小），面向对象和组件，便于协同开发。另外，Yahoo对web开发社区的贡献一直都很积极。 在YUI上扩展开发，一般会采用两种方式，基于对象（object）和基于原型（prototype）。 1. 基于对象（object） 形如singleton单件模式，保证命名空间整洁，方便管理代码。 HN.app.Book =&#160; { &#160; &#160; dialog:new&#160;HN.widget.Dialog(), &#160; &#160; getDialog:function(){ &#160; &#160; &#160; &#160; return&#160;this.dialog; &#160; &#160; }, &#160; &#160; paging:function(){......} } 实例 /** * @fileOverview 书架(book) app */ &#160; HN.namespace('app.Book'); &#160; HN.app.Book = (function(){ //YAHOO alias section var $C = YAHOO.util.Connect, &#160; &#160; $D = YAHOO.util.Dom, &#160; &#160; $E [...]]]></description>
			<content:encoded><![CDATA[<p>这是去年我在一次公司内部讨论会上的交流主题，相关ppt和样例代码<a href="http://panweizeng.com/download/yui-develop.zip">在这里下载</a>。</p>
<p><a href="http://developer.yahoo.com/yui/">YUI</a>是Yahoo的前端开发框架，它的优点是代码清晰（尽管代码量不小），面向对象和组件，便于协同开发。另外，Yahoo对web开发社区的贡献一直都很积极。</p>
<p>在YUI上扩展开发，一般会采用两种方式，基于对象（object）和基于原型（prototype）。</p>
<p><span id="more-337"></span></p>
<p>1. 基于对象（object）<br />
形如<a href="http://en.wikipedia.org/wiki/Singleton_pattern">singleton单件模式</a>，保证命名空间整洁，方便管理代码。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">HN</span><span style="color: Gray;">.</span><span style="color: Blue;">app</span><span style="color: Gray;">.</span><span style="color: Blue;">Book</span><span style="color: Gray;"> =&nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">dialog</span><span style="color: Gray;">:</span><span style="color: Green;">new</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">HN</span><span style="color: Gray;">.</span><span style="color: Blue;">widget</span><span style="color: Gray;">.</span><span style="color: Blue;">Dialog</span><span style="color: Olive;">()</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">getDialog</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">dialog</span><span style="color: Gray;">; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">paging</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span><span style="color: Gray;">......</span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>实例</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">/**</span></li>
<li><span style="color: #ffa500;"> * @fileOverview 书架(book) app</span></li>
<li><span style="color: #ffa500;"> */</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">HN</span><span style="color: Gray;">.</span><span style="color: Blue;">namespace</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">app.Book</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">HN</span><span style="color: Gray;">.</span><span style="color: Blue;">app</span><span style="color: Gray;">.</span><span style="color: Blue;">Book</span><span style="color: Gray;"> = </span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: #ffa500;">//YAHOO alias section</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;"> $</span><span style="color: Blue;">C</span><span style="color: Gray;"> = </span><span style="color: Blue;">YAHOO</span><span style="color: Gray;">.</span><span style="color: Blue;">util</span><span style="color: Gray;">.</span><span style="color: Blue;">Connect</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; $</span><span style="color: Blue;">D</span><span style="color: Gray;"> = </span><span style="color: Blue;">YAHOO</span><span style="color: Gray;">.</span><span style="color: Blue;">util</span><span style="color: Gray;">.</span><span style="color: Blue;">Dom</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; $</span><span style="color: Blue;">E</span><span style="color: Gray;"> = </span><span style="color: Blue;">YAHOO</span><span style="color: Gray;">.</span><span style="color: Blue;">util</span><span style="color: Gray;">.</span><span style="color: Blue;">Event</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; $</span><span style="color: Blue;">CE</span><span style="color: Gray;"> = </span><span style="color: Blue;">YAHOO</span><span style="color: Gray;">.</span><span style="color: Blue;">util</span><span style="color: Gray;">.</span><span style="color: Blue;">CustomEvent</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">dialogId</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">abc</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//private variable</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">function</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">getBook</span><span style="color: Olive;">(</span><span style="color: Blue;">id</span><span style="color: Olive;">){</span><span style="color: Gray;">...</span><span style="color: Olive;">}</span><span style="color: #ffa500;">//private method</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">dialog</span><span style="color: Gray;">:</span><span style="color: Green;">null</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">getDialog</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">dg</span><span style="color: Gray;"> = </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">dialog</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Blue;">dg</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">dg</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">HN</span><span style="color: Gray;">.</span><span style="color: Blue;">widget</span><span style="color: Gray;">.</span><span style="color: Blue;">Dialog</span><span style="color: Olive;">({</span><span style="color: Blue;">id</span><span style="color: Gray;">: </span><span style="color: Blue;">dialogId</span><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">dialog</span><span style="color: Gray;"> = </span><span style="color: Blue;">dg</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">dg</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">getComment</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">bookId</span><span style="color: Gray;">,</span><span style="color: Blue;">callback</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">dg</span><span style="color: Gray;"> = </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">getDialog</span><span style="color: Olive;">()</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">bookItem</span><span style="color: Gray;"> = </span><span style="color: Blue;">getBook</span><span style="color: Olive;">(</span><span style="color: Blue;">bookId</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: #ffa500;">//return ends here</span></li>
<li><span style="color: Olive;">})()</span><span style="color: Gray;">;</span></li></ol></div>
<p>2. 基于原型（prototype）<br />
灵活度高，适合编写通用组件。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">HN</span><span style="color: Gray;">.</span><span style="color: Blue;">widget</span><span style="color: Gray;">.</span><span style="color: Blue;">Dialog</span><span style="color: Gray;"> = </span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">config</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">config</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Blue;">config</span><span style="color: Gray;">.</span><span style="color: Blue;">id</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">id</span><span style="color: Gray;"> = </span><span style="color: Blue;">config</span><span style="color: Gray;">.</span><span style="color: Blue;">id</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">HN</span><span style="color: Gray;">.</span><span style="color: Blue;">widget</span><span style="color: Gray;">.</span><span style="color: Blue;">Dialog</span><span style="color: Gray;">.</span><span style="color: Blue;">prototype</span><span style="color: Gray;"> = </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">setBody</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">html</span><span style="color: Olive;">){</span><span style="color: Gray;">…</span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">show</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span><span style="color: Gray;">…</span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>实例</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">/**</span></li>
<li><span style="color: #ffa500;"> * @fileOverview 评星级(Rating) widget </span></li>
<li><span style="color: #ffa500;"> */</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">HN</span><span style="color: Gray;">.</span><span style="color: Blue;">namespace</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">widget.Rating</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//YAHOO alias section</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;"> $</span><span style="color: Blue;">C</span><span style="color: Gray;"> = </span><span style="color: Blue;">YAHOO</span><span style="color: Gray;">.</span><span style="color: Blue;">util</span><span style="color: Gray;">.</span><span style="color: Blue;">Connect</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Blue;">D</span><span style="color: Gray;"> = </span><span style="color: Blue;">YAHOO</span><span style="color: Gray;">.</span><span style="color: Blue;">util</span><span style="color: Gray;">.</span><span style="color: Blue;">Dom</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Blue;">E</span><span style="color: Gray;"> = </span><span style="color: Blue;">YAHOO</span><span style="color: Gray;">.</span><span style="color: Blue;">util</span><span style="color: Gray;">.</span><span style="color: Blue;">Event</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Blue;">CE</span><span style="color: Gray;"> = </span><span style="color: Blue;">YAHOO</span><span style="color: Gray;">.</span><span style="color: Blue;">util</span><span style="color: Gray;">.</span><span style="color: Blue;">CustomEvent</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">counter</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//private variable</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">function</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">find</span><span style="color: Olive;">(</span><span style="color: Blue;">key</span><span style="color: Gray;">,</span><span style="color: Blue;">arr</span><span style="color: Olive;">){</span><span style="color: Gray;">...</span><span style="color: Olive;">}</span><span style="color: Gray;"> </span><span style="color: #ffa500;">//private method</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">HN</span><span style="color: Gray;">.</span><span style="color: Blue;">widget</span><span style="color: Gray;">.</span><span style="color: Blue;">Rating</span><span style="color: Gray;"> = </span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">el</span><span style="color: Gray;">,</span><span style="color: Blue;">config</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">isInProgress</span><span style="color: Gray;"> = </span><span style="color: Green;">false</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">setConfig</span><span style="color: Olive;">(</span><span style="color: Blue;">config</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">onComplete</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> $</span><span style="color: Blue;">CE</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">onComplete</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: Green;">this</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">init</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">HN</span><span style="color: Gray;">.</span><span style="color: Blue;">widget</span><span style="color: Gray;">.</span><span style="color: Blue;">Rating</span><span style="color: Gray;">.</span><span style="color: Blue;">prototype</span><span style="color: Gray;"> = </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">setConfig</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">config</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Blue;">config</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">attr</span><span style="color: Gray;"> </span><span style="color: Green;">in</span><span style="color: Gray;"> </span><span style="color: Blue;">config</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">config</span><span style="color: Olive;">[</span><span style="color: Blue;">attr</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Blue;">config</span><span style="color: Olive;">[</span><span style="color: Blue;">attr</span><span style="color: Olive;">]</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">setState</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span><span style="color: Gray;">...</span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">post</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">id</span><span style="color: Olive;">){</span><span style="color: Gray;">...</span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">init</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span><span style="color: Gray;">...</span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: #ffa500;">//prototype ends here</span></li>
<li><span style="color: Olive;">})()</span><span style="color: Gray;">;</span></li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/337/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>javascript变量作用域的几个例子</title>
		<link>http://panweizeng.com/archives/156</link>
		<comments>http://panweizeng.com/archives/156#comments</comments>
		<pubDate>Mon, 02 Feb 2009 16:20:00 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=156</guid>
		<description><![CDATA[1. javascript无块级作用域，变量在函数内部可见。和php类似。 function func_scope(){ &#160; &#160; var&#160;x=1; &#160; &#160; if&#160;(true) { &#160; &#160; &#160; &#160; var&#160;x=2; &#160; &#160; &#160; &#160; if&#160;(true) { &#160; &#160; &#160; &#160; &#160; &#160; var&#160;x=3; &#160; &#160; &#160; &#160; &#160; &#160; alert(x); &#160; &#160; &#160; &#160; } &#160; &#160; &#160; &#160; alert(x); &#160; &#160; } &#160; &#160; alert(x); } func_scope(); 输出： [...]]]></description>
			<content:encoded><![CDATA[<p>1. javascript无块级作用域，变量在函数内部可见。和php类似。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">func_scope</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">x</span><span style="color: Gray;">=</span><span style="color: Maroon;">1</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Green;">true</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">x</span><span style="color: Gray;">=</span><span style="color: Maroon;">2</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Green;">true</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">x</span><span style="color: Gray;">=</span><span style="color: Maroon;">3</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: Blue;">x</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: Blue;">x</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: Blue;">x</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">func_scope</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li></ol></div>
<p>输出：<br />
3<br />
3<br />
3<br />
2. 对象初始化可以对自身的属性执行修改，可以修改全局变量的值。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">foo</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">foo</span><span style="color: Gray;">.</span><span style="color: Blue;">abc</span><span style="color: Gray;"> = </span><span style="color: Green;">function</span><span style="color: Olive;">(){</span><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">def</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)}</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">abc</span><span style="color: Gray;"> = </span><span style="color: Green;">function</span><span style="color: Olive;">(){</span><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">xyz</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)}</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">abc</span><span style="color: Gray;"> = </span><span style="color: Green;">function</span><span style="color: Olive;">(){</span><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">@@@@@</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)}</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">abc</span><span style="color: Gray;"> = </span><span style="color: Green;">function</span><span style="color: Olive;">(){</span><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">$$$$$$</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)}</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">foo</span><span style="color: Gray;">.</span><span style="color: Blue;">prototype</span><span style="color: Gray;">.</span><span style="color: Blue;">abc</span><span style="color: Gray;"> = </span><span style="color: Green;">function</span><span style="color: Olive;">(){</span><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">456</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">foo</span><span style="color: Gray;">.</span><span style="color: Blue;">abc</span><span style="color: Gray;"> = </span><span style="color: Green;">function</span><span style="color: Olive;">(){</span><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">123</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">f</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">foo</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">f</span><span style="color: Gray;">.</span><span style="color: Blue;">abc</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">foo</span><span style="color: Gray;">.</span><span style="color: Blue;">abc</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">abc</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li></ol></div>
<p>输出：<br />
xyz<br />
def<br />
错误： abc is not defined （相应解释在第3个例子中）<br />
3. 函数内，只要变量名前面出现var则该变量为局部变量。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">myVar</span><span style="color: Gray;"> =&nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">GLOBAL</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">function</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">foo</span><span style="color: Olive;">()</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">// myVar已经在下面声明，但是在此之前却没有定义</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">myVar evaluates to '</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">+</span><span style="color: Blue;">myVar</span><span style="color: Gray;">+</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">'</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">// 这个myVar其实是局部变量</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">myVar</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">NEW_GLOBAL_VALUE</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">myVar evaluates to '</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">+</span><span style="color: Blue;">myVar</span><span style="color: Gray;">+</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">'</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">// window.myVar指向全局的myVar</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">myVar evaluates to '</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">+</span><span style="color: Teal;">window</span><span style="color: Gray;">.</span><span style="color: Blue;">myVar</span><span style="color: Gray;">+</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">'</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">// 声明一个局部变量myVar，去掉这个则输出结果就完全不同</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">myVar</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">LOCAL</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">myVar evaluates to '</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">+</span><span style="color: Blue;">myVar</span><span style="color: Gray;">+</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">'</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">foo</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">myVar evaluates to '</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">+</span><span style="color: Blue;">myVar</span><span style="color: Gray;">+</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">'</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li></ol></div>
<p>输出：<br />
myVar evaluates to &#8216;undefined&#8217;<br />
myVar evaluates to &#8216;NEW_GLOBAL_VALUE&#8217;<br />
myVar evaluates to &#8216;GLOBAL&#8217;<br />
myVar evaluates to &#8216;LOCAL&#8217;<br />
myVar evaluates to &#8216;GLOBAL&#8217;</p>
<p>对应第2个例子，foo中的abc（abc = function(){alert(&#8216;@@@@@&#8217;)};）为局部变量，全局变量中没有定义过abc所以会报undefine的错误。</p>
<p>结论：<br />
 * 1.变量函数内可见；<br />
 * 2.只要在函数内部声明变量使用了var，则该变量在整个函数内部都是局部变量；<br />
 * 3.声明所有的变量都应该加上var，防止产生歧义；<br />
 * 4.尽量避免引入全局变量。</p>
<p>参考文档：<br />
<a href="http://www.itmill.com/articles/Javascript_global_and_local_variable_scope.htm">http://www.itmill.com/articles/Javascript_global_and_local_variable_scope.htm</a><br />
<a href="http://birdshome.cnblogs.com/archive/2005/01/26/97885.html">http://birdshome.cnblogs.com/archive/2005/01/26/97885.html</a><br />
<a href="http://www.planabc.net/2007/09/20/javascript_examination_questions/">http://www.planabc.net/2007/09/20/javascript_examination_questions/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/156/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>视频网站播放列表的简单实现</title>
		<link>http://panweizeng.com/archives/160</link>
		<comments>http://panweizeng.com/archives/160#comments</comments>
		<pubDate>Sun, 24 Aug 2008 15:35:47 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://panweizeng.com/archives/160</guid>
		<description><![CDATA[以前写的代码，写得比较简单。这里贴一下，我觉得可以作为演示Javascript操作cookie用:) 效果看这里，完整代码（代码中的CookieManager抄袭自O&#8217;Reilly的《JavaScript &#038; DHTML Cookbook》，Utility.each函数抄袭自JQuery中的each）在这里。 下面是关键的代码部分： var PlayList = { &#160; &#160; cookieName:'PlayListIds', &#160; &#160; //保存要播放的视频id列表 &#160; &#160; ids:[], &#160; &#160; //过期时间 单位秒 &#160; &#160; expires:30, &#160; &#160; //读取cookie保存的播放列表信息 播放id保存格式为1232.1221.213.123&#160; 以.间隔 &#160; &#160; read:function(){ &#160; &#160; &#160; &#160; var&#160;cookieString = CookieManager.get(this.cookieName); &#160; &#160; &#160; &#160; return&#160;cookieString != '' ? cookieString.split('.') : []; &#160; &#160; }, [...]]]></description>
			<content:encoded><![CDATA[<p>以前写的代码，写得比较简单。这里贴一下，我觉得可以作为演示Javascript操作cookie用:) </p>
<p>效果看<a href="http://panweizeng.com/others/itv_playlist_paging/index.html">这里</a>，完整代码（代码中的CookieManager抄袭自O&#8217;Reilly的《<a href="http://www.douban.com/subject/2170990/">JavaScript &#038; DHTML Cookbook</a>》，Utility.each函数抄袭自JQuery中的each）在<a href="http://panweizeng.com/others/itv_playlist_paging/playlist.js">这里</a>。</p>
<p><span id="more-160"></span><br />
下面是关键的代码部分：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">PlayList</span><span style="color: Gray;"> = </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">cookieName</span><span style="color: Gray;">:</span><span style="color: #8b0000;">'</span><span style="color: Red;">PlayListIds</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//保存要播放的视频id列表</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">ids</span><span style="color: Gray;">:</span><span style="color: Olive;">[]</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//过期时间 单位秒</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">expires</span><span style="color: Gray;">:</span><span style="color: Maroon;">30</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//读取cookie保存的播放列表信息 播放id保存格式为1232.1221.213.123&nbsp; 以.间隔</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">read</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">cookieString</span><span style="color: Gray;"> = </span><span style="color: Blue;">CookieManager</span><span style="color: Gray;">.</span><span style="color: Blue;">get</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cookieName</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">cookieString</span><span style="color: Gray;"> != </span><span style="color: #8b0000;">''</span><span style="color: Gray;"> ? </span><span style="color: Blue;">cookieString</span><span style="color: Gray;">.</span><span style="color: Blue;">split</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">.</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;"> : </span><span style="color: Olive;">[]</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//获取视频id在数组中的索引</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">indexOf</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">id</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;"> =</span><span style="color: Maroon;">0</span><span style="color: Gray;"> ; </span><span style="color: Blue;">i</span><span style="color: Gray;"> &lt; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">ids</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">++</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">ids</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> == </span><span style="color: Blue;">id</span><span style="color: Gray;">.</span><span style="color: Blue;">toString</span><span style="color: Olive;">())</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;"> -</span><span style="color: Maroon;">1</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//更新cookie信息</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">update</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">CookieManager</span><span style="color: Gray;">.</span><span style="color: Blue;">set</span><span style="color: Olive;">(</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cookieName</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">ids</span><span style="color: Gray;">.</span><span style="color: Blue;">join</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">.</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">CookieManager</span><span style="color: Gray;">.</span><span style="color: Blue;">getExpiresDate</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Gray;">,</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">expires</span><span style="color: Olive;">)</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #8b0000;">'</span><span style="color: Red;">/</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #8b0000;">'</span><span style="color: Red;">.panweizeng.com</span><span style="color: #8b0000;">'</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//增加视频</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">add</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">id</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Green;">typeof</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">id</span><span style="color: Gray;"> != </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">number</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> || </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">indexOf</span><span style="color: Olive;">(</span><span style="color: Blue;">id</span><span style="color: Olive;">)</span><span style="color: Gray;"> != -</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">return</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">ids</span><span style="color: Gray;">.</span><span style="color: Blue;">push</span><span style="color: Olive;">(</span><span style="color: Blue;">id</span><span style="color: Gray;">.</span><span style="color: Blue;">toString</span><span style="color: Olive;">())</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">update</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//移除视频</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">remove</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">id</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">index</span><span style="color: Gray;"> = -</span><span style="color: Maroon;">1</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Green;">typeof</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">id</span><span style="color: Gray;"> != </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">number</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> || </span><span style="color: Olive;">(</span><span style="color: Blue;">index</span><span style="color: Gray;"> = </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">indexOf</span><span style="color: Olive;">(</span><span style="color: Blue;">id</span><span style="color: Olive;">))</span><span style="color: Gray;"> == -</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">return</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">ids</span><span style="color: Gray;">.</span><span style="color: Blue;">splice</span><span style="color: Olive;">(</span><span style="color: Blue;">index</span><span style="color: Gray;">,</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">update</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//清空列表</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">clear</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">CookieManager</span><span style="color: Gray;">.</span><span style="color: Blue;">clear</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">pItem</span><span style="color: Gray;"> = </span><span style="color: Green;">null</span><span style="color: Gray;">,</span><span style="color: Blue;">pItemSel</span><span style="color: Gray;"> = </span><span style="color: Green;">null</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;"> &lt; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">ids</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">++</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">pItemSel</span><span style="color: Gray;"> = $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">playlist-item-sel-</span><span style="color: #8b0000;">'</span><span style="color: Gray;">+</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">ids</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]))</span><span style="color: Gray;"> != </span><span style="color: Green;">null</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;&amp; </span><span style="color: Olive;">(</span><span style="color: Blue;">pItem</span><span style="color: Gray;"> = $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">playlist-item-</span><span style="color: #8b0000;">'</span><span style="color: Gray;">+</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">ids</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]))</span><span style="color: Gray;"> != </span><span style="color: Green;">null</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">pItemSel</span><span style="color: Gray;">.</span><span style="color: Blue;">className</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">unselected</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">pItemSel</span><span style="color: Gray;">.</span><span style="color: Blue;">title</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">添加到点播单</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">pItem</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementsByTagName</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">img</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)[</span><span style="color: Maroon;">0</span><span style="color: Olive;">]</span><span style="color: Gray;">.</span><span style="color: Blue;">style</span><span style="color: Gray;">.</span><span style="color: Blue;">border</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">5px solid white</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//渲染</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">renderSelected</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">pItem</span><span style="color: Gray;"> = </span><span style="color: Green;">null</span><span style="color: Gray;">,</span><span style="color: Blue;">pItemSel</span><span style="color: Gray;"> = </span><span style="color: Green;">null</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;"> &lt; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">ids</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">++</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">pItemSel</span><span style="color: Gray;"> = $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">playlist-item-sel-</span><span style="color: #8b0000;">'</span><span style="color: Gray;">+</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">ids</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]))</span><span style="color: Gray;"> != </span><span style="color: Green;">null</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;&amp; </span><span style="color: Olive;">(</span><span style="color: Blue;">pItem</span><span style="color: Gray;"> = $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">playlist-item-</span><span style="color: #8b0000;">'</span><span style="color: Gray;">+</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">ids</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]))</span><span style="color: Gray;"> != </span><span style="color: Green;">null</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">pItemSel</span><span style="color: Gray;">.</span><span style="color: Blue;">className</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">selected</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">pItemSel</span><span style="color: Gray;">.</span><span style="color: Blue;">title</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">从点播单移除</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">pItem</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementsByTagName</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">img</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)[</span><span style="color: Maroon;">0</span><span style="color: Olive;">]</span><span style="color: Gray;">.</span><span style="color: Blue;">style</span><span style="color: Gray;">.</span><span style="color: Blue;">border</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">5px solid yellow</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//处理点击</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">toggle</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">el</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">el</span><span style="color: Gray;">.</span><span style="color: Blue;">className</span><span style="color: Gray;"> == </span><span style="color: #8b0000;">'</span><span style="color: Red;">unselected</span><span style="color: #8b0000;">'</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">el</span><span style="color: Gray;">.</span><span style="color: Blue;">className</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">selected</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">el</span><span style="color: Gray;">.</span><span style="color: Blue;">title</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">从点播单移除</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">el</span><span style="color: Gray;">.</span><span style="color: Blue;">parentNode</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementsByTagName</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">img</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)[</span><span style="color: Maroon;">0</span><span style="color: Olive;">]</span><span style="color: Gray;">.</span><span style="color: Blue;">style</span><span style="color: Gray;">.</span><span style="color: Blue;">border</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">5px solid yellow</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">add</span><span style="color: Olive;">(</span><span style="color: Blue;">parseInt</span><span style="color: Olive;">(</span><span style="color: Blue;">el</span><span style="color: Gray;">.</span><span style="color: Blue;">getAttribute</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">sid</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)))</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">else</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">el</span><span style="color: Gray;">.</span><span style="color: Blue;">className</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">unselected</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">el</span><span style="color: Gray;">.</span><span style="color: Blue;">title</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">添加到点播单</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">el</span><span style="color: Gray;">.</span><span style="color: Blue;">parentNode</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementsByTagName</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">img</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)[</span><span style="color: Maroon;">0</span><span style="color: Olive;">]</span><span style="color: Gray;">.</span><span style="color: Blue;">style</span><span style="color: Gray;">.</span><span style="color: Blue;">border</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">5px solid white</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">remove</span><span style="color: Olive;">(</span><span style="color: Blue;">parseInt</span><span style="color: Olive;">(</span><span style="color: Blue;">el</span><span style="color: Gray;">.</span><span style="color: Blue;">getAttribute</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">sid</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)))</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//绑定事件</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">attachEvent</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_</span><span style="color: Gray;"> = </span><span style="color: Green;">this</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">els</span><span style="color: Gray;"> = </span><span style="color: Blue;">Utility</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementsByClassName</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">playlist</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">a</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">unselected</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">els</span><span style="color: Gray;"> = </span><span style="color: Blue;">els</span><span style="color: Gray;">.</span><span style="color: Blue;">concat</span><span style="color: Olive;">(</span><span style="color: Blue;">Utility</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementsByClassName</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">playlist</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">a</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">selected</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">Utility</span><span style="color: Gray;">.</span><span style="color: Blue;">each</span><span style="color: Olive;">(</span><span style="color: Blue;">els</span><span style="color: Gray;">,</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Gray;">,</span><span style="color: Blue;">el</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">Utility</span><span style="color: Gray;">.</span><span style="color: Blue;">bind</span><span style="color: Olive;">(</span><span style="color: Blue;">el</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">click</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: Blue;">_</span><span style="color: Gray;">.</span><span style="color: Blue;">toggle</span><span style="color: Gray;">,</span><span style="color: Blue;">_</span><span style="color: Gray;">,</span><span style="color: Blue;">el</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">})</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//初始化</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">init</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">ids</span><span style="color: Gray;"> = </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">read</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">renderSelected</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">attachEvent</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/160/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>近期学习成果</title>
		<link>http://panweizeng.com/archives/158</link>
		<comments>http://panweizeng.com/archives/158#comments</comments>
		<pubDate>Sun, 24 Aug 2008 12:43:00 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[学习]]></category>

		<guid isPermaLink="false">http://panweizeng.com/archives/158</guid>
		<description><![CDATA[在上班休息时间断断续续看完了《ppk谈Javascript》和《精通Javascript》。这两本书都是不错的译作，前者主要面向初级开发者，后者则主要面向需要进阶的同学。从这两本书中学习了很多以前我忽略或者没掌握的基本知识。 Peter-Paul Koch主修古希腊罗马史，所以我觉得ppk一书写得最好的是Javascript历史部分，还有事件那一章也是非常精彩。ppk书中提出的一些观点还有待斟酌，淘宝UED团队的译者们都一一做了批注，所以强烈推荐大家去买中译本吧。 JQuery之父John Resig写的《精通Javascript》主要讲述现代Javascript程序设计，尤其是前面三章让人手不释卷。书中对于DOM、事件和CSS部分写得也非常好，绝对是专家级的讲解。原书中的校对错误不少，还好译者安安在网上准备了一份勘误表。]]></description>
			<content:encoded><![CDATA[<p>在上班休息时间断断续续看完了<a href="http://www.douban.com/subject/3022779/">《ppk谈Javascript》</a>和<a href="http://www.douban.com/subject/3007076/">《精通Javascript》</a>。这两本书都是不错的译作，前者主要面向初级开发者，后者则主要面向需要进阶的同学。从这两本书中学习了很多以前我忽略或者没掌握的基本知识。</p>
<p>Peter-Paul Koch主修古希腊罗马史，所以我觉得ppk一书写得最好的是Javascript历史部分，还有事件那一章也是非常精彩。ppk书中提出的一些观点还有待斟酌，<a href="http://ued.taobao.com/blog/">淘宝UED团队</a>的译者们都一一做了批注，所以强烈推荐大家去买中译本吧。</p>
<p>JQuery之父John Resig写的《精通Javascript》主要讲述现代Javascript程序设计，尤其是前面三章让人手不释卷。书中对于DOM、事件和CSS部分写得也非常好，绝对是专家级的讲解。原书中的校对错误不少，还好译者<a href="http://realazy.org/blog/">安安</a>在网上准备了一份<a href="http://realazy.org/jspro/erratra">勘误表</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/158/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>造成IE浏览器发生Stack Overflow错误的可能原因</title>
		<link>http://panweizeng.com/archives/240</link>
		<comments>http://panweizeng.com/archives/240#comments</comments>
		<pubDate>Tue, 05 Aug 2008 15:54:12 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=240</guid>
		<description><![CDATA[1. IE缓存满了，无法写入。解决办法：清空缓存目录 2. 重复引用相同的Javascript文件。解决办法：去掉重复的文件 3. 无退出条件的递归和循环。解决办法：检查代码 4. 欢迎补充 参考网页http://www.webmasterworld.com/forum21/10213.htm]]></description>
			<content:encoded><![CDATA[<p>1. IE缓存满了，无法写入。解决办法：清空缓存目录</p>
<p>2. 重复引用相同的Javascript文件。解决办法：去掉重复的文件</p>
<p>3. 无退出条件的递归和循环。解决办法：检查代码</p>
<p>4. 欢迎补充</p>
<p>参考网页<a href="http://www.webmasterworld.com/forum21/10213.htm">http://www.webmasterworld.com/forum21/10213.htm</a></p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/240/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
