<?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>Kily&#039;s Blog &#187; JavaScript学习</title>
	<atom:link href="http://www.keelii.com/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.keelii.com</link>
	<description>calls me kily</description>
	<lastBuildDate>Fri, 03 Feb 2012 08:22:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>面向对象的JavaScript文字滚动效果</title>
		<link>http://www.keelii.com/js-oop-scrolltext/</link>
		<comments>http://www.keelii.com/js-oop-scrolltext/#comments</comments>
		<pubDate>Sun, 20 Feb 2011 09:21:44 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[JavaScript学习]]></category>

		<guid isPermaLink="false">http://www.keelii.com/js-oop-scrolltext/</guid>
		<description><![CDATA[看CJ的JavaScript教程到滚动文字效果那节，觉得很受用。大致修改了下放上来和大家分享。类似于门户网站上面的文字滚动效果，如有类同纯属虚构^!^ HTML： &#60;h1 id="title"&#62;This a H1 Title, isn't it?&#60;/h1&#62; &#60;div class="clear"&#62;&#60;/div&#62; &#60;input type="button" id="btn-1" value="开始" /&#62; &#60;input type="button" id="btn-2" value="结束" /&#62; 木有什么好说的，主要看JS。 JavaScript: window.onload = function () { var getID = function (id) { return document.getElementById(id) }, startBtn = getID("btn-1"), &#8230; <a href="http://www.keelii.com/js-oop-scrolltext/">继续阅读 <span class="meta-nav">»</span></a>]]></description>
			<content:encoded><![CDATA[<p>看<a href="http://www.keelii.com/js-regular-expression-learning-part-one/" target="_blank">CJ</a>的JavaScript教程到滚动文字效果那节，觉得很受用。大致修改了下放上来和大家分享。类似于门户网站上面的文字滚动效果，如有类同纯属虚构^!^</p>
<p><strong>HTML：</strong></p>
<pre>&lt;h1 id="title"&gt;This a H1 Title, isn't it?&lt;/h1&gt;
&lt;div class="clear"&gt;&lt;/div&gt;
&lt;input type="button" id="btn-1" value="开始" /&gt;
&lt;input type="button" id="btn-2" value="结束" /&gt;</pre>
<p>木有什么好说的，主要看JS。</p>
<p><span id="more-1670"></span></p>
<p><strong>JavaScript:</strong></p>
<pre>window.onload = function () {
	var getID = function (id) {
			return document.getElementById(id)
		},
		startBtn = getID("btn-1"),
		stopBtn = getID("btn-2"),
		H1 = getID("title");

	function ScrollText(s, ele, t) {
		/**
		 * 创建一个文字滚动对象
		 * s (要滚动的文字)
		 * ele (HTML节点对象)
		 * t (滚动时间隔)
		 */
		this.s = s.split(""); //将传入字符串分割成数组
		this.ele = ele;
		this.t = t || 300; //默认值为300毫秒
	}
	ScrollText.prototype = {
		start: function () { //开始滚动方法
			var s = this.s,
				ele = this.ele;
			//alert(s.shift());
			clearInterval(this.interval);
			this.interval = setInterval(function () {
				s.push(s.shift()); //将字符串数组第一个字符剪切并添加到数组末尾
				//类似挤牙膏^!^
				ele.innerHTML = s.join("");
			}, this.t);
		},
		stop: function () { //结束滚动方法
			clearInterval(this.interval);
		}
	}

	var st = new ScrollText("这是可以设置的滚动文字哦！", H1, 500);

	//“实例化”对象
	startBtn.onclick = function () {
		st.start();
	};
	stopBtn.onclick = function () {
		st.stop();
	}

}</pre>
<p>该说的都在注释里。好吧，不想看代码 看什么？看Demo呀！<a href="http://www.keelii.com/learning/js-learning/js-oop-scrolltext.html" target="_blank">点击这里查看</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/js-oop-scrolltext/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>WordPress3.0无限级分类下拉菜单制作方法(有不足)</title>
		<link>http://www.keelii.com/wordpress-wp-nav-menu/</link>
		<comments>http://www.keelii.com/wordpress-wp-nav-menu/#comments</comments>
		<pubDate>Sat, 04 Dec 2010 02:30:24 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[CSS相关]]></category>
		<category><![CDATA[JavaScript学习]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.keelii.com/wordpress-wp-nav-menu/</guid>
		<description><![CDATA[帮朋友做个小导航时用到了下拉菜单，话说WordPress3.0以上版本的”wp_nav_menu()”真是好用，加上主题自定义菜单的设置简直可以说是完美的网站导航。 涉及到下拉菜单制作的方法最核心的还是鼠标移动到上面的处理。下面是调用wp_nav_menu()函数后的HTML结构(做解释用)： &#60;div class="menu-菜单名-container"&#62; &#60;ul class="menu" id="menu-菜单名"&#62; &#60;li class="menu-tiem"&#62; &#60;a href="#"&#62;菜单项目1&#60;/a&#62; &#60;ul class="sub-menu"&#62; &#60;li&#62;&#60;a href="#"&#62;子菜单项目1-1&#60;/a&#62;&#60;/li&#62; &#60;li&#62;&#60;a href="#"&#62;子菜单项目1-2&#60;/a&#62;&#60;/li&#62; ... &#60;/ul&#62; &#60;/li&#62; &#60;li&#62;&#60;a href="#"&#62;菜单项目2&#60;/a&#62;&#60;/li&#62; &#60;/ul&#62; &#60;/div&#62; 这是一种很经典很优雅的导航HTML代码，在IE6以上以及标准浏览器中要实现下拉效果只用一句CSS就能搞定。比如下面的示例代码(可自定义)： .menu li a { float:left; height:35px; width:100px;/*菜单高度与宽度*/ line-height:35px; text-align:center;  color:#ccc; text-align:center; } .menu li { &#8230; <a href="http://www.keelii.com/wordpress-wp-nav-menu/">继续阅读 <span class="meta-nav">»</span></a>]]></description>
			<content:encoded><![CDATA[<p>帮朋友做个小导航时用到了下拉菜单，话说WordPress3.0以上版本的”wp_nav_menu()”真是好用，加上主题自定义菜单的设置简直可以说是完美的网站导航。</p>
<p>涉及到下拉菜单制作的方法最核心的还是鼠标移动到上面的处理。下面是调用wp_nav_menu()函数后的HTML结构(做解释用)：</p>
<p><span id="more-1659"></span></p>
<pre>&lt;div class="menu-菜单名-container"&gt;
	&lt;ul class="menu" id="menu-菜单名"&gt;
		&lt;li class="menu-tiem"&gt;
			&lt;a href="#"&gt;菜单项目1&lt;/a&gt;
			&lt;ul class="sub-menu"&gt;
				&lt;li&gt;&lt;a href="#"&gt;子菜单项目1-1&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;a href="#"&gt;子菜单项目1-2&lt;/a&gt;&lt;/li&gt;
				...
			&lt;/ul&gt;
		&lt;/li&gt;
		&lt;li&gt;&lt;a href="#"&gt;菜单项目2&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
&lt;/div&gt;</pre>
<p>这是一种很经典很优雅的导航HTML代码，在IE6以上以及标准浏览器中要实现下拉效果只用一句CSS就能搞定。比如下面的示例代码(可自定义)：</p>
<pre>.menu li a { float:left; height:35px; width:100px;/*菜单高度与宽度*/ line-height:35px; text-align:center;  color:#ccc; text-align:center; }
.menu li { float:left; height:1%; background:#000; }
.menu-sjys-container { position:absolute; z-index:1000;}
.menu li ul li { clear:both; border-bottom:1px solid #333; border-right:none;  }
.menu-item  { position:relative; border-right:1px dotted #333; }
.menu-item:hover&gt;.sub-menu{ display:block; <span style="color: #ff0000;">/*下拉效果只用到这一段代码*/</span> }
.sub-menu { position:relative; left:1px; margin:0; z-index:101; display:none;<span style="color: #ff0000;">/*一般情况下隐藏子菜单*/</span> }
.sub-menu ul.sub-menu { position:absolute; left:100px; top:0;}</pre>
<p>上面的这两段代码在IE6以上以及标准浏览器中表现的很完美，原因是IE6这种老浏览器还不支持任何标签的伪类属性，即htmlTag:hover。所以为了兼容我们又不得不用JS来实现(纯CSS亦可)。我大概写了一段JS可以勉强达到效果，但不知道为什么在IE中切换菜单时会有闪动的感觉，这个得求教JS高手了哈。</p>
<pre><span style="color: #ff0000;">&lt;!--[if lt IE 7]&gt; </span>&lt;script type="text/javascript"&gt;
//&lt;![CDATA[
/*导航联动效果*/
(function () {
	function getElementsByClass(searchClass, node, tag) {
		var classElements = new Array();
		if (node == null) node = document;
		if (tag == null) tag = '*';
		var els = node.getElementsByTagName(tag);
		var elsLen = els.length;
		var pattern = new RegExp("(^|\\s)" + searchClass + "(\\s|$)");
		for (i = 0, j = 0; i &lt; elsLen; i++) {
			if (pattern.test(els[i].className)) {
				classElements[j] = els[i];
				j++;
			}
		}
		return classElements;
	}
	function hoverSubMenu(node, flag) {
		node.onmouseover = function () {
			var subMenu = getElementsByClass("sub-menu", this)[0];
			if (subMenu) {
				subMenu.style.display = "block";
			}
		}
		node.onmouseleave = function () {
			var subMenu = getElementsByClass("sub-menu", this)[0];
			if (subMenu) {
				subMenu.style.display = "none";
			}
		}
	}
	var menuItems = getElementsByClass("menu-item");
	for (var i = 0; i &lt; menuItems.length; i++) {
		hoverSubMenu(menuItems[i], i);
	}
})();
//]]&gt;
&lt;/script&gt;
<span style="color: #ff0000;">&lt;![endif]—&gt;</span></pre>
<p><span style="text-decoration: line-through;">问题应该出在不同浏览器对JS中onmouseover事件处理的方法上。但我还没有弄清楚，希望有“大湿”指导下哈。</span></p>
<p>问题在于W3C对onmouseout事件处理方法不是很理想，微软IE支持的onmouseleave方法确可以正常工作。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/wordpress-wp-nav-menu/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>JavaScript 正则表达式学习笔记&lt;2&gt;</title>
		<link>http://www.keelii.com/js-regular-expression-learning-part-two/</link>
		<comments>http://www.keelii.com/js-regular-expression-learning-part-two/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 11:23:23 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[JavaScript学习]]></category>
		<category><![CDATA[web前端关注]]></category>
		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://www.keelii.com/js-regular-expression-learning-part-two/</guid>
		<description><![CDATA[那么今天继续了，上次我们熟悉了一下关于JavaScript正则表达式的一些基本匹配方式，今儿个咱来学习下String对象的一些和正则表达式有关的方法，关于这个应该不用多说，常用于表单的字符串验证。 1.String对象的replace()方法 String对象最基本的方法之一，它用于替换目标字符串中的某个字符。比如： var s = “&#8212;Hello11&#8212;”;    //将这个字符串中的-替换成# alert(s.replace(“-”,”#”));  //返回#&#8211;Hello11&#8212;而不是###Hello11### //要替换所有的-号我们可以用正则了 alert(s.replace(/-/,”#”))   //用/-/来替换#,结果与上面一样，原因是你忘了加上匹配模式 alert(s.replace(/-/g,”#”));  //这样就可以将字符串的所有的-替换成#了 //如果我想把目标字符串替换成#Hello11#该怎样写正则呢？ alert(s.replace(/-+/g,”#”));  //+是什么作用请查上篇笔记 String对象正则实现trim（去空格）效果 var s = “   Hello   “; alert(“&#124;”+s.replace(/^\s+/,”")+”&#124;”);  //替换前面的多个空格：^ alert(“&#124;”+s.replace(/\s+$/,”")+”&#124;”);  //替换后面的多个空格：$  注：加上“&#124;”易辨认 //整合到一个trim函数里面去,调用此方法时可以去掉字符串两边的空格 function trim(s){ var re1 = /^\s+/,re2 = /\s+$/; s= &#8230; <a href="http://www.keelii.com/js-regular-expression-learning-part-two/">继续阅读 <span class="meta-nav">»</span></a>]]></description>
			<content:encoded><![CDATA[<p><img style="display: inline; border: 0px;" title="js-regular-expression-learning-part-two" src="http://www.keelii.com/wp-content/uploads/2010/09/jsregularexpressionlearningparttwo.jpg" alt="js-regular-expression-learning-part-two" width="524" height="204" border="0" data-pinit="registered" /></p>
<p>那么今天继续了，上次我们熟悉了一下关于JavaScript正则表达式的一些基本匹配方式，今儿个咱来学习下String对象的一些和正则表达式有关的方法，关于这个应该不用多说，常用于表单的字符串验证。</p>
<p><span id="more-1595"></span></p>
<h3>1.String对象的replace()方法</h3>
<p>String对象最基本的方法之一，它用于替换目标字符串中的某个字符。比如：</p>
<blockquote><p>var s = “&#8212;Hello11&#8212;”;    //将这个字符串中的-替换成#<br />
alert(s.replace(“-”,”#”));  //返回#&#8211;Hello11&#8212;而不是###Hello11###<br />
//要替换所有的-号我们可以用正则了<br />
alert(s.replace(/-/,”#”))   //用/-/来替换#,结果与上面一样，原因是你忘了加上匹配模式<br />
alert(s.replace(/-/<span style="color: #ff0000;">g</span>,”#”));  //这样就可以将字符串的所有的-替换成#了<br />
//如果我想把目标字符串替换成#Hello11#该怎样写正则呢？<br />
alert(s.replace(/-<span style="color: #ff0000;">+</span>/g,”#”));  //+是什么作用请查上篇笔记</p></blockquote>
<p>String对象正则实现trim（去空格）效果</p>
<blockquote><p>var s = “   Hello   “;<br />
alert(“|”+s.replace(/^\s+/,”")+”|”);  //替换前面的多个空格：^<br />
alert(“|”+s.replace(/\s+$/,”")+”|”);  //替换后面的多个空格：$  注：加上“|”易辨认<br />
//整合到一个trim函数里面去,调用此方法时可以去掉字符串两边的空格<br />
function trim(s){<br />
var re1 = /^\s+/,re2 = /\s+$/;<br />
s= s.replace(replace(),”");<br />
return s.replace(re2,”");<br />
}</p></blockquote>
<h3>2.String对象的split()方法</h3>
<p>此方法将目标字符串用某字符分割开，并返回一个数组对象。基本用法如下：</p>
<blockquote><p>var s = “12,34,56&#8243;;<br />
var arrs = s.split(“,”)<br />
alert(arrs[0]+”\n”+arrs[1]+”\n”+arrs[2]);</p></blockquote>
<p><strong>小扩展</strong>：当目标字符串是用户输入的一些字符，比如生日。我们该如何分别获取他的年、月、日。</p>
<blockquote><p>var s = “1988-8-8&#8243;;   //这里是用户输入的数据<br />
var date = s.split(“-”);<br />
var year = date[0],month = date[1],day = [2];<br />
alert(“您出生于：”+year+”年”+month+”月”+day+”日”);</p></blockquote>
<p>对于一些“不按常理出牌”的用户，我们可以用正则去搞定，比如：</p>
<blockquote><p>var s = “1988- 8 -*8&#8243;;  //比如用户这样输入了数据<br />
var date = s.split(/[^0-9]+/);  //脱字符^放在[]中间表示匹配相反内容<br />
//这个正则表示匹配多个非数字字符，用其分割<br />
var year = date[0],month = date[1],day = [2];<br />
alert(“您出生于：”+year+”年”+month+”月”+day+”日”);</p></blockquote>
<h3>3.String对象的search()方法</h3>
<p>这个方法表示查找字符串中与之匹配的字符并返回其下标值，没找到匹配值时返回-1 。比如：</p>
<blockquote><p>var s = “My age is 18.”;<br />
alert(s.search(“1&#8243;));//返回10,search方法与indexof方法的区别在于search可以使用正则</p></blockquote>
<h3>4.String对象的match()方法</h3>
<p>这个方法类似于正则中的exec方法，如：</p>
<blockquote><p>var s = “Ubuntu 8.10&#8243;;<br />
var re = /^([a-z]+)\s+(\d+)\.(\d+)/i; //正则中的.表示匹配任意字符，这里要转义它<br />
var arrs = s.match(re);<br />
alert(“name:”+arrs[1]+”\nversion:”+arrs[2]+”\nsub-version:”+arrs[3]);</p></blockquote>
<p>休息一下..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/js-regular-expression-learning-part-two/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>JavaScript正则表达式学习笔记&lt;1&gt;</title>
		<link>http://www.keelii.com/js-regular-expression-learning-part-one/</link>
		<comments>http://www.keelii.com/js-regular-expression-learning-part-one/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 04:38:46 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[JavaScript学习]]></category>
		<category><![CDATA[web前端关注]]></category>
		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://www.keelii.com/js-regular-expression-learning-part-one/</guid>
		<description><![CDATA[刚刚收到李炎恢老师的弟子CJ写的一部JavaScript+Ajax+JQuery视频教程，对于我这种刚入门级的菜菜来说真是雪中送炭呀！今天看到了正则表达式章节，感觉老师讲得非常不错，做点笔记与大家分享，当然也做个免费广告哈：如果想购买此视频教程的话点击这里。绝对物超所值，现在网络上最新的关于JS的视频教程也就是这个了哦。 1.什么是正则表达式 正则表达式是由普通字符（如a到z）以及特殊字符（称为元字符）组成的文字模式，该模式描述在查找文字主体时待匹配的一个或者多个字符串。作为一个模板，将字符模式与所搜索的客串进行匹配。 关于元字符与匹配内容可以参考这张表：正则匹配表 2.怎么创建正则表达式 var re = new RegExp();//RegExp是一个对象,和Aarray一样 //但这样没有任何效果,需要将正则表达式的内容作为字符串传递进去 re = new RegExp(“a”);//最简单的正则表达式,将匹配字母a 可简写为“var re = /a/” re = new RegExp(“a”,”i”);//第二个参数,表示匹配时不分大小写 RegExp构造函数第一个参数为正则表达式内容，而第二个参数则为可选项标志，而且可以组合使用。可选标志如： g （全文查找） i （忽略大小写） m （多行查找） var re = new RegExp(“a”,”gi”); //匹配所有的a或A。可简写为“var re = /a/gi” 3.正则表达式对象的方法 &#8230; <a href="http://www.keelii.com/js-regular-expression-learning-part-one/">继续阅读 <span class="meta-nav">»</span></a>]]></description>
			<content:encoded><![CDATA[<p><img style="display: inline; border: 0px;" title="js-regular-expression-learning-part-one" src="http://www.keelii.com/wp-content/uploads/2010/09/jsregularexpressionlearningpartone.jpg" alt="js-regular-expression-learning-part-one" width="524" height="204" border="0" data-pinit="registered" /></p>
<p>刚刚收到李炎恢老师的弟子<a href="http://www.pl4cj.org/blog/" target="_blank">CJ</a>写的一部JavaScript+Ajax+JQuery视频教程，对于我这种刚入门级的菜菜来说真是雪中送炭呀！今天看到了正则表达式章节，感觉老师讲得非常不错，做点笔记与大家分享，当然也做个免费广告哈：如果想购买此视频教程的话<a href="http://hi.baidu.com/%C0%EE%D1%D7%BB%D6/blog/item/d8d6683fbcf925f7828b138d.html" target="_blank">点击这里</a>。绝对物超所值，现在网络上最新的关于JS的视频教程也就是这个了哦。</p>
<p><span id="more-1593"></span></p>
<h3>1.什么是正则表达式</h3>
<p>正则表达式是由普通字符（如a到z）以及特殊字符（称为元字符）组成的文字模式，该模式描述在查找文字主体时待匹配的一个或者多个字符串。作为一个模板，将字符模式与所搜索的客串进行匹配。</p>
<p id="retable">关于元字符与匹配内容可以参考这张表：<a href="http://www.keelii.com/learning/js-learning/js-re-table.html">正则匹配表</a></p>
<h3>2.怎么创建正则表达式</h3>
<blockquote><p>var re = new RegExp();//RegExp是一个对象,和Aarray一样<br />
//但这样没有任何效果,需要将正则表达式的内容作为字符串传递进去<br />
re = new RegExp(“a”);//最简单的正则表达式,将匹配字母a <span style="color: #ff0000;">可简写为“var re = /a/”</span><br />
re = new RegExp(“a”,”i”);//第二个参数,表示匹配时不分大小写</p></blockquote>
<p>RegExp构造函数第一个参数为正则表达式内容，而第二个参数则为可选项标志，而且可以组合使用。可选标志如：</p>
<ul>
<li>g （全文查找）</li>
<li>i （忽略大小写）</li>
<li>m （多行查找）</li>
</ul>
<blockquote><p>var re = new RegExp(“a”,”gi”);<br />
//匹配所有的a或A。<span style="color: #ff0000;">可简写为“var re = /a/gi”</span></p></blockquote>
<h3>3.正则表达式对象的方法</h3>
<p>三种方法分别是test，exec，compile：</p>
<ul>
<li>test：返回一个Boolean值，它指出在被查找的字符串中是否存在模式。</li>
<li>exec：用正则表达式模式在字符串中运行查找，并返回包含该查找结果的一个数组。</li>
<li>compile：把正则表达式编译为内部格式，从而执行得更快。</li>
</ul>
<h3>4.正则表达式的属性</h3>
<p>常用的有以下几种：</p>
<ul>
<li>source：返回表达式文本的复本。只读。</li>
<li>lastIndex：返回字符位置，它是被查找字符串中下一次成功匹配的开始位置。</li>
<li>$1…$9：返回九个在模式匹配期间找到的、最近保存的部分。只读。</li>
<li>input ($_)：返回执行规范表述查找的字符串。只读。</li>
<li>lastMatch ($&amp;)：返回任何正则表达式搜索过程中的最后匹配字符。只读。</li>
<li>leftContext ($`) ：返回被查找的字符串中从字符串开始位置到最后匹配之前的位置之间的字符。只读。</li>
<li>rightContext ($&#8217;) 返回被搜索的客串中从最后一个匹配位置开始到字符串结尾之间的字符。只读</li>
</ul>
<h3>5.动手测试正则表达式是如何工作的</h3>
<p>用test方法测试是否匹配模式：</p>
<blockquote><p>var re = /he/;        //最简单的正则表达式,将匹配he这个单词<br />
var str = “he”;<br />
alert(re.test(str));  //用test方法测试是否匹配，返回true<br />
str = “we”;<br />
alert(re.test(str));  //false<br />
str = “HE”;<br />
alert(re.test(str));  //false<br />
re = /he/i;           //加上可选标识i(ignoreCase)来忽略大小写<br />
alert(re.test(str));  //true<br />
str = “yeah~he loves her”;<br />
alert(re.test(str));  //true</p></blockquote>
<p>脱字符（^）开头匹配：（<a href="#retable">查表看看什么是脱字符</a>）</p>
<blockquote><p>re = /^he/i;<br />
alert(re.test(str));  //false,因为he不在str最开始<br />
str = “He is a good guy!”;<br />
alert(re.test(str));  //true</p></blockquote>
<p>美元符（$）末尾匹配：</p>
<blockquote><p>re = /^he$/i;         //$表示字符结束位置<br />
alert(re.test(str));  //返回false说明”he is a good guy”不是以he结尾<br />
str = “He”;<br />
alert(re.test(str));  //返回true</p></blockquote>
<p>（\s）空白字符匹配：（包括空格，制表符，换行，换页等）</p>
<blockquote><p>str = “user Name”;<br />
re = /\s/;<br />
alert(re.test(str));  //str=”user\nName”也将返回true</p></blockquote>
<p>方括号（[ ]）范围匹配：</p>
<blockquote><p>re = /^[a-z]/i;        //匹配开头为a~z中任意字符并且不区分大小写<br />
str = “variableName”;<br />
alert(re.test(str));  //true<br />
str = “123variableName”;<br />
alert(re.test(str));  //false</p></blockquote>
<p>用exec方法测试哪些字符匹配了模式：</p>
<blockquote><p>var osVersion = “Ubuntu 8&#8243;;<br />
var re = /^[a-z]+\s+\d+$/i;  //+表示字符至少出现1次，\d表示一个数字<br />
//这个正则表示：匹配 以a~z中任意字母为开头、至少有一个空白字符、至少有一个数字结尾的字符串<br />
alert(re.test(osVersion));   //true<br />
re = /^[a-z]+\s+\d+$/i;<br />
arr = re.exec(osVersion);<br />
alert(arr[0]);     //将osVersion完整，因为它刚好匹配re<br />
//我们只想取出数字..<br />
re=/\d+/;<br />
arr = re.exec(osVersion);<br />
alert(arr[0]);     //返回8</p></blockquote>
<p>复杂一点的子匹配：</p>
<blockquote><p>re = /^[a-z]+\s+(\d+)$/i;    //用()来创建子匹配<br />
arr = re.exec(osVersion);<br />
alert(arr[0]+”\n”+arr[1]);   //arr[1]为第一个子匹配也就是版本号8<br />
osVersion = “Ubuntu 8.10&#8243;;<br />
re = /^[a-z]+\s+(\d+)\.(\d+)$/i;    //.是正则中的元字符需要转义即“\.”表示输出一个.号<br />
arr = re.exec(osVersion);<br />
alert(“完整版本：”+arr[0]+”\n大版本号：”+arr[1]+”\n字版本号：”+arr[2]);</p></blockquote>
<p>休息一下精彩继续&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/js-regular-expression-learning-part-one/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>推荐一本JavaScript入门的书</title>
		<link>http://www.keelii.com/javascript-dom-script/</link>
		<comments>http://www.keelii.com/javascript-dom-script/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 10:38:08 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[JavaScript学习]]></category>
		<category><![CDATA[web前端关注]]></category>

		<guid isPermaLink="false">http://www.keelii.com/?p=1588</guid>
		<description><![CDATA[很惭愧学习JavaScript很长时间了但一直都还是入门阶段，先前也介绍过一本JS方面的书：《推荐一本JavaScript方面的书》。与此书相比，这次推荐给大家的书《JavaScript DOM编程艺术》就相对简单一些了。 其实我还没有买过中文版的JavaScript DOM编程艺术，我是在网上下载的英文PDF版，一章章看完感觉很不错就介绍给大家。 作者从实际出发一步步地引导读者学习有关JavaScript WEB编程的相关知识，语言简洁精炼（没过四级的我看着都不废劲^!^），难能可贵的是每一章里作者都会给出一个实例，并一步步的完善，倒数第二章“Putting It All Together”向读者介绍了一个完整的界面设计与制作，用到了前面学习到的DOM的相关操作，表现与结构分享的思想，以及JavaScript的一些基础知识。 我可以负责任的告诉大家：即使你没学习过JavaScript，只要略一点编程的看这本书绝对会收获很多东西。 PDF英文版《JavaScript DOM编程艺术》下载地址：http://www.uushare.com/user/keelii/file/3160255]]></description>
			<content:encoded><![CDATA[<p><img style="display: inline; border: 0px;" title="javascript-dom-scripting" src="http://www.keelii.com/wp-content/uploads/2010/06/javascriptdomscripting.jpg" border="0" alt="javascript-dom-scripting" width="524" height="204" /></p>
<p>很惭愧学习JavaScript很长时间了但一直都还是入门阶段，先前也介绍过一本JS方面的书：<a href="http://www.keelii.com/recommand-javascript-book/">《推荐一本JavaScript方面的书》</a>。与此书相比，这次推荐给大家的书《JavaScript DOM编程艺术》就相对简单一些了。</p>
<p><span id="more-1588"></span></p>
<p>其实我还没有买过中文版的JavaScript DOM编程艺术，我是在网上下载的英文PDF版，一章章看完感觉很不错就介绍给大家。</p>
<p>作者从实际出发一步步地引导读者学习有关JavaScript WEB编程的相关知识，语言简洁精炼（没过四级的我看着都不废劲^!^），难能可贵的是每一章里作者都会给出一个实例，并一步步的完善，倒数第二章“Putting It All Together”向读者介绍了一个完整的界面设计与制作，用到了前面学习到的DOM的相关操作，表现与结构分享的思想，以及JavaScript的一些基础知识。</p>
<p>我可以负责任的告诉大家：即使你没学习过JavaScript，只要略一点编程的看这本书绝对会收获很多东西。</p>
<p>PDF英文版《JavaScript DOM编程艺术》下载地址：<a title="http://www.uushare.com/user/keelii/file/3160255" href="http://www.uushare.com/user/keelii/file/3160255">http://www.uushare.com/user/keelii/file/3160255</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/javascript-dom-script/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>纯JavaScript制作围棋棋盘</title>
		<link>http://www.keelii.com/js-chessboard/</link>
		<comments>http://www.keelii.com/js-chessboard/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 15:30:55 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[JavaScript学习]]></category>

		<guid isPermaLink="false">http://www.keelii.com/?p=1163</guid>
		<description><![CDATA[同学们这次要让大家开开眼界啦。在上上上文中提到的书中有这样一个实例：用纯JavaScript制作一个围棋棋盘，本来以为很复杂，但看到作者给出的代码时就很惊讶，简简单单几行代码就能实现这样一个效果真是强大啊。 效果如下图： JavaScript代码如下： for(var x = 0; x&#60;19; x++){ for(var y = 0; y&#60;19; y++){ var div = document.createElement("div"); document.body.appendChild(div); div.style.position = "absolute"; div.style.width = "23px"; div.style.height = "23px"; div.style.left = x*23 + "px"; div.style.top = y*23 + "px"; var &#8230; <a href="http://www.keelii.com/js-chessboard/">继续阅读 <span class="meta-nav">»</span></a>]]></description>
			<content:encoded><![CDATA[<p>同学们这次要让大家开开眼界啦。<a href="http://www.keelii.com/recommand-javascript-book/" target="_self">在上上上文</a>中提到的书中有这样一个实例：用纯JavaScript制作一个围棋棋盘，本来以为很复杂，但看到作者给出的代码时就很惊讶，简简单单几行代码就能实现这样一个效果真是强大啊。</p>
<p>效果如下图：</p>
<p style="text-align: center;"><img class="size-full wp-image-1164  aligncenter" title="js-chessboard" src="http://www.keelii.com/wp-content/uploads/2009/09/js-chessboard.gif" alt="js-chessboard" width="200" height="201" /></p>
<p style="text-align: center;">
<p><strong>JavaScript代码如下</strong>：</p>
<pre>
<blockquote>
<pre>for(var x = 0; x&lt;19; x++){
for(var y = 0; y&lt;19; y++){
	var div = document.createElement("div");
	document.body.appendChild(div);
	div.style.position = "absolute";
	div.style.width = "23px";
	div.style.height = "23px";
	div.style.left = x*23 + "px";
	div.style.top = y*23 + "px";

	var s = ((x-9)%9 ? 0 :(x-9)/9)+1 + (((y-9)%9 ? 0 : (y-9)/9)+1)*3;
	if(s==4&amp;&amp;(x/3)%2==1 &amp;&amp; (y/3)%2==1) s="X";

	div.style.backgroundImage = "url(B" +s+ ".gif)";
}
}
}</pre>
</blockquote>
</pre>
<p>短短十来行代码却凝结了多少经验和智慧，值得细细品味。</p>
<p><a title="js棋盘" href="http://www.keelii.com/learning/js-learning/js-chessboard/index.html" target="_blank">点这里看效果</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/js-chessboard/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>推荐一本JavaScript方面的书</title>
		<link>http://www.keelii.com/recommand-javascript-book/</link>
		<comments>http://www.keelii.com/recommand-javascript-book/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 15:30:15 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[JavaScript学习]]></category>

		<guid isPermaLink="false">http://www.keelii.com/?p=1136</guid>
		<description><![CDATA[昨天刚收到amazon的平邮书籍：悟透JavaScript&#60;李战 著&#62; , 网页设计解析&#60;周陟 著&#62;。前者原本在在别人博客上看有很多人推荐就慕名买下了。刚看一天，感觉非常不错值得推荐给大家阅读。 JavaScript的重要和强大自然不言而喻，如果你喜欢JavaScript或者是喜欢网站前端开发。作为一个非常实用而且流行的编程语言，这将是你的必须课。 后者(网页设计解析)还没来得及看，如果感觉好的话我会给大家介绍一下的。里面有几部非常强大的视频教程等我上传到网站上后也一起发出来给大家分享。]]></description>
			<content:encoded><![CDATA[<p>昨天刚收到amazon的平邮书籍：悟透JavaScript&lt;李战 著&gt; , 网页设计解析&lt;周陟 著&gt;。前者原本在在别人博客上看有很多人推荐就慕名买下了。刚看一天，感觉非常不错值得推荐给大家阅读。</p>
<p>JavaScript的重要和强大自然不言而喻，如果你喜欢JavaScript或者是喜欢网站前端开发。作为一个非常实用而且流行的编程语言，这将是你的必须课。</p>
<div id="attachment_1139" class="wp-caption aligncenter" style="width: 330px"><img class="size-full wp-image-1139" title="zenjs" src="http://www.keelii.com/wp-content/uploads/2009/09/zenjs.jpg" alt="悟透javascript" width="320" height="416" /><p class="wp-caption-text">悟透javascript</p></div>
<p>后者(网页设计解析)还没来得及看，如果感觉好的话我会给大家介绍一下的。里面有几部<strong>非常强大</strong>的视频教程等我上传到网站上后也一起发出来给大家分享。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/recommand-javascript-book/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>JavaScript简单实现表格格行换色</title>
		<link>http://www.keelii.com/js-table-color-changing/</link>
		<comments>http://www.keelii.com/js-table-color-changing/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 23:30:05 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[JavaScript学习]]></category>

		<guid isPermaLink="false">http://www.keelii.com/?p=1119</guid>
		<description><![CDATA[网页中数据表的设计往往采用格行变色的方法修饰表格，不仅看起来美观也一定程度上提升用户体验。传统的方法是用JavaScript来实现，今天我们来看看具体的实现方法。的确很简单哦。 先看最终效果图：   表格的代码可以任意写，或者直接从DreamWeaver里面拉。最重要的是JavaScript代码，如下： window.onload = function(){ //浏览器载入时执行函数 var tr = document.getElementsByTagName("tr"); //获取文档中的tr元素。此时变量tr是个对象数组 for ( i=0; i&#60;tr.length; i++){ if (i%2 == 0){ //奇数行给tr元素添加ctr类属性 tr[i].className += "ctr"; } tr[i].onmouseover = function(){ this.className += " trhover"; //鼠标经过每个tr时追加给tr元素trhover类属性 } tr[i].onmouseout = function(){ this.className &#8230; <a href="http://www.keelii.com/js-table-color-changing/">继续阅读 <span class="meta-nav">»</span></a>]]></description>
			<content:encoded><![CDATA[<p>网页中数据表的设计往往采用格行变色的方法修饰表格，不仅看起来美观也一定程度上提升用户体验。传统的方法是用JavaScript来实现，今天我们来看看具体的实现方法。的确很简单哦。</p>
<p>先看最终效果图：</p>
<p> </p>
<p><img class="aligncenter size-full wp-image-1121" title="js-table-color-changing" src="http://www.keelii.com/wp-content/uploads/2009/09/js-table-color-changing.gif" alt="js-table-color-changing" width="356" height="247" /></p>
<p>表格的代码可以任意写，或者直接从DreamWeaver里面拉。最重要的是JavaScript代码，如下：</p>
<blockquote>
<pre>window.onload = function(){<span style="color: #ccc;"> //浏览器载入时执行函数</span>
var tr = document.getElementsByTagName("tr");
		<span style="color: #ccc;">//获取文档中的tr元素。此时变量tr是个对象数组</span>

for ( i=0; i&lt;tr.length; i++){
	if (i%2 == 0){	<span style="color: #ccc;">//奇数行给tr元素添加ctr类属性</span>
		tr[i].className += "ctr";
	}

	tr[i].onmouseover = function(){
		this.className += " trhover";
		<span style="color: #ccc;">//鼠标经过每个tr时追加给tr元素trhover类属性</span>
	}
	tr[i].onmouseout = function(){
		this.className = this.className.replace(" trhover","");
		<span style="color: #ccc;">//鼠标离开每个tr时移除掉tr元素trhover类属性</span>
	}
}</pre>
<pre>}</pre>
</blockquote>
<p>接下来的工作很简单了，就是把批段代码加入到你网页的script标签中。</p>
<p><a title="点击查看效果及源码" href="http://www.keelii.com/learning/js-learning/js-table-color-changing.html" target="_self">点击查看效果及源码</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/js-table-color-changing/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>JavaScript函数递归调用</title>
		<link>http://www.keelii.com/js-fun-recursive/</link>
		<comments>http://www.keelii.com/js-fun-recursive/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 04:00:25 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[JavaScript学习]]></category>

		<guid isPermaLink="false">http://www.keelii.com/?p=1044</guid>
		<description><![CDATA[学习C语言或者考二级C的人都会知道函数的递归调用这个知识点是最难的了，理解它对我的编程的逻辑思维会有很大的帮助。那么在JavaScript中是怎样使用递归的呢，一个很经典的例了就是平方和的计算。 代码如下： function sumn(n) { if (n==1) { return n; } else { return ( n*n + sumn(n-1) ); } } 调用此函数就可以计算出n的阶乘。比如我们计算3的阶乘，函数sumn(3)的执行过程如下：]]></description>
			<content:encoded><![CDATA[<p><!-- * { 	margin:0; 	padding:0; } body { 	background-color:#FFF; 	color:#000; 	padding:10px; 	font:normal 12px Arial, Helvetica, sans-serif; }  h1 { font-size:12px;} --><script type="text/javascript">// < ![CDATA[
// < ![CDATA[
function sumn(n) {
	if (n==1)</p>
<p>		{ return n; }</p>
<p>	else 
		{ return ( n*n + sumn(n-1) ); }
}
// ]]&gt;</script></p>
<p>学习C语言或者考二级C的人都会知道函数的递归调用这个知识点是最难的了，理解它对我的编程的逻辑思维会有很大的帮助。那么在JavaScript中是怎样使用递归的呢，一个很经典的例了就是平方和的计算。</p>
<p><strong>代码如下：</strong></p>
<blockquote>
<pre>function sumn(n) {
	if (n==1)

		{ return n; }

	else
		{ return ( n*n + sumn(n-1) ); }
}</pre>
</blockquote>
<p>调用此函数就可以计算出n的阶乘。比如我们计算3的阶乘，函数sumn(3)的执行过程如下：</p>
<p><img title="square-sum" src="../wp-content/uploads/2009/08/square-sum.gif" alt="square-sum" width="520" height="387" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/js-fun-recursive/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>JavaScript中的函数(方法)重载</title>
		<link>http://www.keelii.com/javascript-function-reload/</link>
		<comments>http://www.keelii.com/javascript-function-reload/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 10:23:59 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[JavaScript学习]]></category>

		<guid isPermaLink="false">http://www.keelii.com/?p=938</guid>
		<description><![CDATA[学习JavaScript有几天了，今天看到JS中的面向对象编程。我们知道在一般的面向对象的编程中方法是可以重载的，通俗得说就是可重载方法的调用是根据形参决定的。比如说一个类中有两个方法(不完整)： cal (a,b) { return a+b;}； cal (a,b,c) { return a*b;}； 如果调用第二个带三个参数的方法”cal(1,2,3);”，将返回1乘2的值，而不是1加2。 然而在JavaScript中函数是不支持重载的，如果我们必须要用到重载怎么办呢？这时候就得用到arguments对象了，它可以检测到返回的函数参数个数。我们可以调用它的length属性来做判断从而达到防重载的效果。用法如下： function returnArgs (){ alert(arguments.length); } returnArgs("小","强"); //输出2 returnArgs(2009); //输出1 returnArgs(); //输出0 总结一下写一个小程序，下面的脚本代码一定会输出”3&#124;6&#8243;从而模仿实现了JavaScript的函数重载： &#60;script type="text/javascript"&#62; function cal (a,b,c){ if (arguments.length == 2){ return a+b; } else if(arguments.length == &#8230; <a href="http://www.keelii.com/javascript-function-reload/">继续阅读 <span class="meta-nav">»</span></a>]]></description>
			<content:encoded><![CDATA[<p>学习JavaScript有几天了，今天看到JS中的面向对象编程。我们知道在一般的面向对象的编程中方法是可以重载的，通俗得说就是可重载方法的调用是根据形参决定的。比如说一个类中有两个方法(不完整)：</p>
<blockquote>
<pre>cal (a,b) 	{ return a+b;}；
cal (a,b,c) 	{ return a*b;}；</pre>
</blockquote>
<p>如果调用第二个带三个参数的方法”cal(1,2,3);”，将返回1乘2的值，而不是1加2。</p>
<p>然而在JavaScript中<strong>函数</strong>是不支持重载的，如果我们必须要用到重载怎么办呢？这时候就得用到arguments对象了，它可以检测到返回的函数参数个数。我们可以调用它的length属性来做判断从而达到防重载的效果。用法如下：</p>
<blockquote>
<pre>function returnArgs (){ alert(arguments.length); }
returnArgs("小","强");	 //输出2
returnArgs(2009);		//输出1
returnArgs();			//输出0</pre>
</blockquote>
<p>总结一下写一个小程序，下面的脚本代码一定会输出”3|6&#8243;从而模仿实现了JavaScript的函数重载：</p>
<blockquote>
<pre>&lt;script type="text/javascript"&gt;
	function cal (a,b,c){
		if (arguments.length == 2){
			return a+b;
		}
		else if(arguments.length == 3){
			return a*b*c;
		}
	}
	document.write (cal(1,2) + " | ");
	document.write (cal(1,2,3));
&lt;/script&gt;</pre>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/javascript-function-reload/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
	</channel>
</rss>

