<?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://www.storyday.com/tag/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://www.storyday.com</link>
	<description>生活点滴、旅游、web技术、虚拟主机、电子信息</description>
	<lastBuildDate>Wed, 08 Feb 2012 05:54:53 +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>fckeditor 的php调用和自定义文件上传</title>
		<link>http://www.storyday.com/html/y2010/2603_fckeditor-of-php-calls-and-custom-file-upload.html</link>
		<comments>http://www.storyday.com/html/y2010/2603_fckeditor-of-php-calls-and-custom-file-upload.html#comments</comments>
		<pubDate>Fri, 22 Jan 2010 09:14:25 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.storyday.com/?p=2603</guid>
		<description><![CDATA[相比tiny TinyMCE 我还是更喜欢 fckeditor （不是fuck editor），原因有三： 最早接触的是fckeditor，那个时候tinyMCE好像是收费的（不知道有没有记错），而且fckeditor一直都比较丰富； fckeditor的文档似乎更加完善； 不喜欢tinyMCE的弹出窗口的体验，更喜欢fckeditor的div浮动方式，特别是查看源代码的时候。 于是，最近自己在做自己公司的站点，后台就采用了fckeditor，在此期间也遇到一些问题，特此记录。 ajax提交的时候，使用jquery serialize()无法获取rft文本编辑框中的内容。仔细看了看原理才知道，fckeditor采用的是iframe方式，所以js提交的时候没有触发form.submit，当然也就获取不到内容，处理的方式很简单，在提交之前，用js获取一下iframe中的内容，代码如下: $('#hotel_description').val( getEditorTextContents('hotel_description') );假设 hotel_description是RTF文本编辑器的ID getEditorTextContents的函数代码如下： function getEditorTextContents(EditorName) { var oEditor = FCKeditorAPI.GetInstance(EditorName); return(oEditor.EditorDocument.body.innerHTML); } 如何自定义上传图片程序。fckeditor本身自带有图片上传，但是有的时候并不一定能满足我们的需求，所以这个时候您可能需要fckeditor能直接调用第三方图片管理程序。假设图片程序路径是 http://www.huichuan365.com/media/ 那么php调用fckeditor的代码如下： BasePath = HOME_URL.'/lib/fckeditor/' ; $oFCKeditor-&#62;Config['ImageBrowserURL'] = 'http://www.huichuan365.com/media/' ;//第三方图片程序的地址$oFCKeditor-&#62;Config['ImageBrowserWindowWidth'] =800;//第三方图片程序弹出窗口的宽度，同样的也可以定义高度 $oFCKeditor-&#62;Width = '100%' ; $oFCKeditor-&#62;Height = '450' ; $oFCKeditor-&#62;Create() ; ?&#62; 上面的的步骤可以让你在编辑器中点击图片上传的时候，自动引导上传程序到第三方网址。 接下来的问题就是，在第三方网页中添加一个功能：当点击图片的时候， 网页自动关闭，同时图片的路径传递回当前的编辑器中，在第三方网页中的代码如下： function SelectFile( fileUrl ) [...]]]></description>
			<content:encoded><![CDATA[<p>相比tiny<a href="http://tinymce.moxiecode.com/" target="_blank"> TinyMCE </a>我还是更喜欢 <a href="http://www.fckeditor.net/" target="_blank"> fckeditor </a>（不是fuck editor），原因有三：</p>
<ol>
<li>最早接触的是fckeditor，那个时候tinyMCE好像是收费的（不知道有没有记错），而且fckeditor一直都比较丰富；</li>
<li>fckeditor的文档似乎更加完善；</li>
<li>不喜欢tinyMCE的弹出窗口的体验，更喜欢<a href="http://www.fckeditor.net/" target="_blank">fckeditor</a>的div浮动方式，特别是查看源代码的时候。</li>
</ol>
<p>于是，最近自己在做自己公司的站点，后台就采用了<a href="http://www.fckeditor.net/" target="_blank">fckeditor</a>，在此期间也遇到一些问题，特此记录。<span id="more-2603"></span></p>
<ol>
<li><strong>ajax提交的时候，使用jquery serialize()无法获取rft文本编辑框中的内容。</strong>仔细看了看原理才知道，fckeditor采用的是iframe方式，所以js提交的时候没有触发form.submit，当然也就获取不到内容，处理的方式很简单，在提交之前，用js获取一下iframe中的内容，代码如下:<br />
<code> $('#hotel_description').val( getEditorTextContents('hotel_description') );</code>假设 hotel_description是RTF文本编辑器的ID<br />
getEditorTextContents的函数代码如下：<br />
<code>function getEditorTextContents(EditorName) {<br />
var oEditor = FCKeditorAPI.GetInstance(EditorName);<br />
return(oEditor.EditorDocument.body.innerHTML);<br />
}</code></li>
<li><strong>如何自定义上传图片程序</strong>。fckeditor本身自带有图片上传，但是有的时候并不一定能满足我们的需求，所以这个时候您可能需要fckeditor能直接调用第三方图片管理程序。假设图片程序路径是 <a href="http://www.huichuan365.com/">http://www.huichuan365.com/media/</a><br />
那么php调用fckeditor的代码如下：<br />
<code>BasePath = HOME_URL.'/lib/fckeditor/' ;<br />
$oFCKeditor-&gt;Config['ImageBrowserURL'] = 'http://www.huichuan365.com/media/' ;//第三方图片程序的地址$oFCKeditor-&gt;Config['ImageBrowserWindowWidth'] =800;//第三方图片程序弹出窗口的宽度，同样的也可以定义高度<br />
$oFCKeditor-&gt;Width = '100%' ;<br />
$oFCKeditor-&gt;Height = '450' ;<br />
$oFCKeditor-&gt;Create() ;<br />
?&gt; </code><br />
上面的的步骤可以让你在编辑器中点击图片上传的时候，自动引导上传程序到第三方网址。<br />
接下来的问题就是，在第三方网页中添加一个功能：当点击图片的时候， 网页自动关闭，同时图片的路径传递回当前的编辑器中，在第三方网页中的代码如下：<br />
<code>function SelectFile( fileUrl )<br />
{<br />
// window.opener.SetUrl( url, width, height, alt);<br />
window.opener.SetUrl( fileUrl ) ;<br />
window.close() ;<br />
}</code>这段代码，官方网站也有</li>
</ol>
<p>好了，特此记录。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2010/2603_fckeditor-of-php-calls-and-custom-file-upload.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>分享一段基于jQuery的表单验证的javascript</title>
		<link>http://www.storyday.com/html/y2009/2272_share-section-of-jquery-based-form-validation-javascript.html</link>
		<comments>http://www.storyday.com/html/y2009/2272_share-section-of-jquery-based-form-validation-javascript.html#comments</comments>
		<pubDate>Wed, 18 Mar 2009 06:32:13 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.storyday.com/html/y2009/2272_%e5%88%86%e4%ba%ab%e4%b8%80%e6%ae%b5%e5%9f%ba%e4%ba%8ejquery%e7%9a%84%e8%a1%a8%e5%8d%95%e9%aa%8c%e8%af%81%e7%9a%84javascript.html</guid>
		<description><![CDATA[有jQuery，一切都好办了，因为用它可以方便的定位到html中的任何一个节点，下面一段代码是cosbeta用于表单验证的javascript脚本： 首先引入jQuery库 &#60;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"&#62;&#60;/script&#62; 然后编写验证表单的函数 function valid(s){ var e=s.split('&#38;');var i=0; while( i&#60;e.length ){ var tmp=e[i].split('='); var el = "#"+tmp[0]; var fv =$(el).val(); var tp = tmp[1]; $(el).next().hide();//将表单域后面的出错提示隐藏掉 if( tp == "text" ){ if( fv == "" ) { $(el).next().show(); //若表单域为空，则显示出错提示 return false; //返回false，以下相同 } } if( tp == "int" ){ if( isNaN( fv ) [...]]]></description>
			<content:encoded><![CDATA[<p>有jQuery，一切都好办了，因为用它可以方便的定位到html中的任何一个节点，下面一段代码是cosbeta用于表单验证的javascript脚本：</p>
<p>首先引入jQuery库</p>
<p><code>&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"&gt;&lt;/script&gt;</code></p>
<p>然后编写验证表单的函数</p>
<p><span id="more-2272"></span></p>
<p><code>function valid(s){<br />
var e=s.split('&amp;');var i=0;<br />
while( i&lt;e.length ){<br />
var tmp=e[i].split('=');<br />
var el = "#"+tmp[0];<br />
var fv =$(el).val();<br />
var tp = tmp[1];<br />
$(el).next().hide();//将表单域后面的出错提示隐藏掉<br />
if( tp == "text" ){<br />
if( fv == "" ) {<br />
$(el).next().show(); //若表单域为空，则显示出错提示<br />
return false; //返回false，以下相同<br />
}<br />
}<br />
if( tp == "int" ){<br />
if( isNaN( fv ) ) {<br />
$(el).next().show();<br />
return false;<br />
}<br />
}<br />
if( tp == "email" ){<br />
var res = new RegExp("^([A-Za-z0-9_|-]+[.]*[A-Za-z0-9_|-]+)+@[A-Za-z0-9|-]+([.][A-Za-z0-9|-]+)*[.][A-Za-z0-9]+$","ig");<br />
if (!res.test(fv)){<br />
$(el).next().show();<br />
return false;<br />
}<br />
}<br />
i++;<br />
}<br />
}</code></p>
<p>使用方法距离：</p>
<p><code>&lt;input size="20" type="text" name="email" id="email"  /&gt;<br />
&lt;span class="errormsg"&gt;E-mail is not valid&lt;/span&gt;<br />
&lt;input type="password" name="password" id="password"    /&gt;<br />
&lt;span class="errormsg"&gt;password is required&lt;/span&gt;<br />
&lt;input type="submit" value="Login" onClick="return valid('email=email&amp;password=text')"/&gt;</code></p>
<p>valid的参数说明，若表单域中的input或者select等等需要是email格式，则参数为xxx=email,数字格式为xxx=int,其他非空文本格式则为xxx=text,验证多个表单域用&amp;将其连接起来，如name=text&amp;mail=email&amp;age=int</p>
<p>案例可以参见<a href="http://host.storyday.com" target="_blank">生活点滴虚拟主机</a>的注册表单案例，当然，这个案例更加智能，但是不如本文的代码效率高和灵活，所以才有了这篇日志。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2009/2272_share-section-of-jquery-based-form-validation-javascript.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>javascript and HttpOnly cookies</title>
		<link>http://www.storyday.com/html/y2008/2120_javascript-and-httponly-cookies.html</link>
		<comments>http://www.storyday.com/html/y2008/2120_javascript-and-httponly-cookies.html#comments</comments>
		<pubDate>Sat, 20 Dec 2008 08:42:41 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.storyday.com/?p=2120</guid>
		<description><![CDATA[对于很多只依赖于cookie验证的网站来说，HttpOnly cookies是一个很好的解决方案，在支持HttpOnly cookies的浏览器中（IE6以上，FF3.0以上），javascript是无法读取和修改HttpOnly cookies，或许这样可让网站用户验证更加安全。 wikipedia中对于httpOnly的描述如下： `HttpOnly&#8217;: Set-Cookie: RMID=732423sdfs73242; expires=Fri, 31-Dec-2010 23:59:59 GMT; path=/; domain=.example.net; HttpOnly When the browser receives such a cookie, it is supposed to use it as usual in the following HTTP exchanges, but not to make it visible to client-side scripts.[21] The `HttpOnly` flag is not part of any standard, and is [...]]]></description>
			<content:encoded><![CDATA[<p>对于很多只依赖于cookie验证的网站来说，HttpOnly cookies是一个很好的解决方案，在支持HttpOnly cookies的浏览器中（IE6以上，FF3.0以上），javascript是无法读取和修改HttpOnly cookies，或许这样可让网站用户验证更加安全。</p>
<p>wikipedia中对于httpOnly的描述如下：</p>
<blockquote><p>`HttpOnly&#8217;:</p>
<p>Set-Cookie: RMID=732423sdfs73242; expires=Fri, 31-Dec-2010 23:59:59 GMT; path=/; domain=.example.net; HttpOnly</p>
<p>When the browser receives such a cookie, it is supposed to use it as usual in the following HTTP exchanges, but not to make it visible to client-side scripts.[21] The `HttpOnly` flag is not part of any standard, and is not implemented in all browsers. Note that there is currently no prevention of reading or writing the session cookie via a XMLHTTPRequest.[36]</p></blockquote>
<p>所以，若是网站基于cookie而非服务器端的验证，请最好加上HttpOnly，当然，目前这个属性还不属于任何一个标准，也不是所有的浏览器支持，另外知名的wordpress程序也已经更改了cookie的属性为httpOnly。</p>
<p>javascript无法读取HttpOnly cookies，若想在js中获取cookie的属性该如何处理呢？</p>
<p><a href="http://www.storyday.com">cosbeta</a>也没有什么比较好的办法，所以只有告诉大家都绝招：还得动用服务器端脚本读出cookie，然后用输出js代码，或者用ajax去获取服务器端程序读出的cookie值。</p>
<p>于是<a href="http://wordpress.org/extend/plugins/cos-html-cache/">cos-html-cache</a>因此升级了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2008/2120_javascript-and-httponly-cookies.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Jquery树形菜单的实现</title>
		<link>http://www.storyday.com/html/y2008/1812_jquery-tree-menu.html</link>
		<comments>http://www.storyday.com/html/y2008/1812_jquery-tree-menu.html#comments</comments>
		<pubDate>Wed, 03 Sep 2008 12:01:16 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.storyday.com/?p=1812</guid>
		<description><![CDATA[jQuey这个东西很好很强大，用jQuery操作DOM简直是易如反掌。这不，刚才icemapro小弟给我留言，希望我能写一个jQuery的树形菜单，在强大的就Query的帮助下，仅仅花了大约10分钟就完成了，其中还有大约7分钟在考虑css的问题，所以熟悉jquery可是对你很有帮助的哦，废话不多说，下面发布代码，讲解方式依然在注释中体现： 菜单的html代码如下，你可以根据需要进行扩展： storyday.com 第一级目录 iceman 第2级目录 第2级目录 第3级目录 第3级目录 cosbeta 生活点滴 江东 我想上面的html代码应该不用解释了吧，否则这篇文章你也没有看得必要了哈，下面是css的实现，其实css是最难搞的，目前搞定是实现目录式树形，其他树状也是很简单的，无非就是改变一下css a:link,a:visited{font-size:12px; color:#094477;text-decoration:none; } a:link:hover,a:visited:hover{ color:#000cf;text-decoration:underline; } ul.folder{padding:0;margin:0;list-style:none;/*重置ul的margin和padding，否则打死都无法兼容FF和IE*/} li.folder{ background:#fff url(folderbg.png) no-repeat 0 0;padding:0px 0 0px 14px; margin:0 2px; text-indent:20px; /*folder背景，目前放到是windows目录背景，如果是其他树形，用其他背景图片替代即可*/ } li.folder-op{background:#fff url(folderbg-op.png) no-repeat 0 0;} .disnone{ display:none; }/*这是一个公共的css class，表示隐藏该元素*/ 下面开始介绍重点，那就是js的实现，可能这个重点会让你失望，毕竟代码才那么简单的几行，当然在运用jquery之前肯定是要引入jquery库文件的，本例子中直接引用的本blog（生活点滴）中的jquery库： 下面是js代码，解释依然在注释中： function Exp(obj){ var html_element = $(obj).parent('.folder');/*获取当前点击的父dom，在本例子中获取的dom节点将是 “第一级目录所在的li.folder”*/ var sub_element = [...]]]></description>
			<content:encoded><![CDATA[<p>jQuey这个东西很好很强大，用jQuery操作DOM简直是易如反掌。这不，刚才icemapro小弟给我留言，希望我能写一个jQuery的树形菜单，在强大的就Query的帮助下，仅仅花了大约10分钟就完成了，其中还有大约7分钟在考虑css的问题，所以熟悉jquery可是对你很有帮助的哦，废话不多说，下面发布代码，讲解方式依然在注释中体现：<br />
菜单的html代码如下，你可以根据需要进行扩展：<br />
<code>
<ul class="folder">
<li class="folder"><a href="#root">storyday.com</a></li>
<li class="folder"><a href="#root" onClick="Exp(this)">第一级目录</a>
<ul class="folder disnone" >
<li class="folder" ><a href="#">iceman</a></li>
<li class="folder" ><a href="#">第2级目录</a></li>
<li class="folder" ><a href="#root" onClick="Exp(this)">第2级目录</a>
<ul class="folder disnone">
<li class="folder" ><a href="#">第3级目录</a></li>
<li class="folder" ><a href="#">第3级目录</a></li>
</ul>
</li>
</ul>
</li>
<li class="folder"><a href="#root" >cosbeta</a></li>
<li class="folder"><a href="#root" >生活点滴</a></li>
<li class="folder"><a href="#root" >江东</a></li>
</ul>
<p></code><br />
我想上面的html代码应该不用解释了吧，否则这篇文章你也没有看得必要了哈，下面是css的实现，其实css是最难搞的，目前搞定是实现目录式树形，其他树状也是很简单的，无非就是改变一下css<br />
<code><br />
 a:link,a:visited{font-size:12px;<br />
color:#094477;text-decoration:none;<br />
}<br />
a:link:hover,a:visited:hover{<br />
color:#000cf;text-decoration:underline;<br />
}<br />
ul.folder{padding:0;margin:0;list-style:none;/*重置ul的margin和padding，否则打死都无法兼容FF和IE*/}<br />
li.folder{<br />
background:#fff url(folderbg.png) no-repeat 0 0;padding:0px 0 0px 14px;<br />
margin:0 2px;<br />
text-indent:20px;<br />
/*folder背景，目前放到是windows目录背景，如果是其他树形，用其他背景图片替代即可*/<br />
}<br />
li.folder-op{background:#fff url(folderbg-op.png) no-repeat 0 0;}<br />
.disnone{<br />
display:none;<br />
}/*这是一个公共的css class，表示隐藏该元素*/<br />
</code><br />
下面开始介绍重点，那就是js的实现，可能这个重点会让你失望，毕竟代码才那么简单的几行，当然在运用jquery之前肯定是要引入jquery库文件的，本例子中直接引用的本blog（生活点滴）中的jquery库：<br />
<code> <script type="text/javascript"  src="http://www.storyday.com/wp-content/themes/cosxp/common.js.php"></script> </code><br />
下面是js代码，解释依然在注释中：<br />
<code>function Exp(obj){<br />
		var html_element = $(obj).parent('.folder');/*获取当前点击的父dom，在本例子中获取的dom节点将是 “第一级目录所在的li.folder”*/<br />
		var sub_element =  $(html_element).children(".folder"); ;/*根据当前的父dom，获取本级的子dom*/<br />
		if( html_element.attr('class').indexOf('folder-op') != -1 ){<br />
/*css class .folder-op表示当前已经展开的类，如果展开，则前面的+背景变成-背景，具体可以在后面的例子中看到<br />
如果class中含有该类，则表示当前已经展开，所以下面的两行的任务是：1.隐藏该目录，2.remove掉此css class<br />
*/<br />
			html_element.removeClass('folder-op');<br />
			sub_element.hide();<br />
			}<br />
			else{<br />
/*否则，添加表示目录已经展开的类，展示该目录*/<br />
			html_element.addClass('folder-op');<br />
			sub_element.show(500);<br />
			}<br />
		}</code><br />
对，对于js就只需要上面的几行，太简单了，对吧,下面是例子：<span id="more-1812"></span><br />
<iframe src="http://www.storyday.com/wp-content/uploads/2008/09/tree-jquery.html" frameborder="0" width="400" height="150"></iframe><br />
上面例子中包含文件有：<a href="http://www.storyday.com/wp-content/uploads/2008/09/folderbg-op.png"><img src="http://www.storyday.com/wp-content/uploads/2008/09/folderbg-op.png" alt="" title="folderbg-op" width="31" height="14" class="alignnone size-medium wp-image-1815" /></a><a href="http://www.storyday.com/wp-content/uploads/2008/09/folderbg.png"><img src="http://www.storyday.com/wp-content/uploads/2008/09/folderbg.png" alt="" title="folderbg" width="31" height="14" class="alignnone size-medium wp-image-1814" /></a><a href='http://www.storyday.com/wp-content/uploads/2008/09/tree-jquery.html'>tree-jquery</a>！<br />
有些细节是在css中控制的，所以如果你需要其他样式请自行修改css，如下面的另外一个例子：（例子中的虚线不完美，特别没个分支最后的那一行, 所以，在css的运用上发挥你的聪明才智吧）：<br />
<iframe src="http://www.storyday.com/wp-content/uploads/2008/09/tree-jquery-2.html"    frameborder="0" width="400" height="150"></iframe><br />
&#8212;&#8212;&#8212;&#8212;end&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2008/1812_jquery-tree-menu.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>javascript初级教程2：操作文档对象</title>
		<link>http://www.storyday.com/html/y2008/1616_js-course-2.html</link>
		<comments>http://www.storyday.com/html/y2008/1616_js-course-2.html#comments</comments>
		<pubDate>Thu, 17 Jul 2008 12:22:05 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tutor]]></category>

		<guid isPermaLink="false">http://www.storyday.com/?p=1616</guid>
		<description><![CDATA[传说在很久很久以前，我打算写一下javascript入门到文章，结果仅仅在开了一个头之后便忘记续写了。今天晚上，忘记把电池带回家了，做不了其他事情，于是乎抓紧时间补上后续的教程。 在上次的日志中，我谈到这样一个看法：服务器端程序是负责输出文本，也包括输出javascript，而javascript则是负责操作浏览器。今天我就大致的说一说javascript是如何操作浏览器的。在javascript中，我们可以将一切都看作对象（各位看官，别看见对象就害怕，其实js的这个对象没有那么恐怖）。首先我们来举一个通俗的例子，比如我们想叫一个小妹妹把一个饭碗举起来，用javascript可以这样表达： 人.女人.小妹妹.右手.捧起(饭碗)。 我们看看这代代码，首先找到对象人.然后引用人的成员.女人，最后定位到右手，引用函数“捧起”，参数就是饭碗了。 好了，所以，你知道了一些常见的对象表述，便可以灵活的运用js来操作了。下面介绍一下常用的操作： alert('hi');//警示消息，内容是"hi"，当然hi也可以是其他变量 window.close();//关闭窗口 document.getElementById("my-id").value = "123";//给id="my-id"这个元素赋值 .value只对表单有效 document.getElementById("my-id").innerHTML = "123";//如果 id元素是html区域，如div span li等等 document.getElementById("my-id").innerHTML = "这里也可以是html代码"; 是不是很简单呢，注意上面代码中大小写不能错误！ 今天就写这么简单的几行，因为电池快用尽了，其实知道对象操作的基本思想之后，你甚至可以直接用javascript框架了。]]></description>
			<content:encoded><![CDATA[<p>传说在很久很久以前，我打算写一下javascript入门到文章，结果仅仅在<a href="http://www.storyday.com/html/y2007/826_js-course-1.html">开了一个头</a>之后便忘记续写了。今天晚上，忘记把电池带回家了，做不了其他事情，于是乎抓紧时间补上后续的教程。</p>
<p>在上次的日志中，我谈到这样一个看法：服务器端程序是负责输出文本，也包括输出javascript，而javascript则是负责操作浏览器。今天我就大致的说一说javascript是如何操作浏览器的。在javascript中，我们可以将一切都看作对象（各位看官，别看见对象就害怕，其实js的这个对象没有那么恐怖）。首先我们来举一个通俗的例子，比如我们想叫一个小妹妹把一个饭碗举起来，用javascript可以这样表达：</p>
<p><code>人.女人.小妹妹.右手.捧起(饭碗)。</code></p>
<p>我们看看这代代码，首先找到对象人.然后引用人的成员.女人，最后定位到右手，引用函数“捧起”，参数就是饭碗了。</p>
<p>好了，所以，你知道了一些常见的对象表述，便可以灵活的运用js来操作了。下面介绍一下常用的操作：<br />
<code>alert('hi');//警示消息，内容是"hi"，当然hi也可以是其他变量<br />
window.close();//关闭窗口<br />
document.getElementById("my-id").value = "123";//给id="my-id"这个元素赋值 .value只对表单有效<br />
document.getElementById("my-id").innerHTML = "123";//如果 id元素是html区域，如div span li等等<br />
document.getElementById("my-id").innerHTML = "<strong>这里也可以是html代码</strong>";</code><br />
是不是很简单呢，注意上面代码中大小写不能错误！</p>
<p>今天就写这么简单的几行，因为电池快用尽了，其实知道对象操作的基本思想之后，你甚至可以直接用javascript框架了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2008/1616_js-course-2.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>分享一个基于jQuery的表单验证函数</title>
		<link>http://www.storyday.com/html/y2008/1602_jquery-a-share-based-on-the-forms-authentication-function.html</link>
		<comments>http://www.storyday.com/html/y2008/1602_jquery-a-share-based-on-the-forms-authentication-function.html#comments</comments>
		<pubDate>Fri, 11 Jul 2008 12:25:57 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[网站技术]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.storyday.com/?p=1602</guid>
		<description><![CDATA[今天晚上在做某个项目，由于需要表单验证，因此自己就花了点时间写了一个基于jQuery的表单验证的函数，当然下面的这个函数大家可以当作成品使用，如你熟悉jQuery的话，你还可以直接将函数绑定在表单上。 当然仅仅是简单的分享，所以有朋友肯定还嫌不够，需要了解一下原理，那么下面开始介绍原理： 首先，表单得按照特定的方式输入，这样js才能按照一定的格式去遍历元素，那么在本例子中，格式如下： 姓名： 不能为空 学号: 必须为数字 E-mail: email格式不正确 不需要验证 email格式不正确 下面是脚本的部分 其实，通过jQeury进行html的DOM遍历是相当方便的，所以熟悉jquery之后，编写其他扩展到函数或者class是相当的轻松了。本例子的演示地址在这里，不想直接copy本文代码的，请看示例的源文件即可。]]></description>
			<content:encoded><![CDATA[<p>今天晚上在做某个项目，由于需要表单验证，因此自己就花了点时间写了一个基于jQuery的表单验证的函数，当然下面的这个函数大家可以当作成品使用，如你熟悉jQuery的话，你还可以直接将函数绑定在表单上。</p>
<p>当然仅仅是简单的分享，所以有朋友肯定还嫌不够，需要了解一下原理，那么下面开始介绍原理：</p>
<p>首先，表单得按照特定的方式输入，这样js才能按照一定的格式去遍历元素，那么在本例子中，格式如下：<br />
<code><br />
<form action="" name="login" id="login"><!--首先当然是form元素，该元素的ID是login --><br />
<!--每一项表单均由一个DIV分开，如下面的姓名 学号 email等等--><br />
<!-- 下面我们分析每一项div中的元素--></p>
<div>
 <span type="text">姓名：</span><br />
<!-- 第一个是span元素，该元素的作用有两点--><br />
<!-- 1.体现标题，如例子中的姓名 --><br />
<!-- 2.通过属性 type判断验证方式，即该项目需要验证否。type=text表示能为空--><br />
<!-- type=email表示email验证 type=int表示必须为数字... 当然今后可以扩展 --></p>
<input type="text" name="txt" />
 <span class="errormsg">不能为空</span>
</div>
<div>
 <span type="int">学号:</span></p>
<input type="text" name="email" />
 <span class="errormsg">必须为数字</span>
</div>
<div>
 <span type="email">E-mail:</span></p>
<input type="text" name="email" />
 <span class="errormsg">email格式不正确</span>
</div>
<div>
 <span type="">不需要验证</span></p>
<input type="text" name="email" />
 <span class="errormsg">email格式不正确</span>
</div>
</form>
<p></code><span id="more-1602"></span><br />
下面是脚本的部分<code><br />
<script language="javascript" src="http://www.storyday.com/wp-content/themes/cosxp/common.js.php"></script><br />
<!--上面这一行表示引用jquery js库 --><br />
<script LANGUAGE="JavaScript">
<!--
function validForm(element){
	var ret = true;
	$("span.errormsg").hide();//再每次验证之前，将上一次的的警告进行隐藏
	 $("#" + element + " div ").each(function(i){//循环表单元素，逐个判断表单变量是否满足要求
		var type = $(this).find("span").attr("type");
              //获取当前变量的验证要求 int email 或 text？
		var formvalue = $(this).find("input").val();
            //获取当前表单的值		
		if( type == "text" ){//如果是text非空要求
			if( formvalue == "" ) {//如果为空		
				$(this).find("span").show();//则显示当前div元素中隐藏的警告
				ret =  false;//返回值为false 一下处理雷同
			}
		}
		if( type == "int" ){
			if( isNaN( formvalue ) ) {			
				$(this).find("span").show();
				ret =  false;
			}
		}</p>
<p>		if( type == "email" ){</p>
<p>			var res = new RegExp("^([A-Za-z0-9_|-]+[.]*[A-Za-z0-9_|-]+)+@[A-Za-z0-9|-]+([.][A-Za-z0-9|-]+)*[.][A-Za-z0-9]+$","ig");
			if (!res.test(formvalue)){			
				$(this).find("span").show();
				ret =  false;
			}
		}</p>
<p>	});
	return ret;</p>
<p>}
//-->
</script></code></p>
<p>其实，通过jQeury进行html的DOM遍历是相当方便的，所以熟悉jquery之后，编写其他扩展到函数或者class是相当的轻松了。本例子的<a href="http://www.storyday.com/wp-content/uploads/2008/07/demo.html">演示地址在这里</a>，不想直接copy本文代码的，请看示例的源文件即可。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2008/1602_jquery-a-share-based-on-the-forms-authentication-function.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>”javascript 尚未实现“错误解决办法</title>
		<link>http://www.storyday.com/html/y2008/1516_javascript-has-not-yet-been-achieved-the-wrong-solution.html</link>
		<comments>http://www.storyday.com/html/y2008/1516_javascript-has-not-yet-been-achieved-the-wrong-solution.html#comments</comments>
		<pubDate>Thu, 24 Apr 2008 02:56:27 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.storyday.com/?p=1516</guid>
		<description><![CDATA[被该死的IE给搞惨了，耽误了很多时间，实在不划算。打开页面的时候，FF下一切正常，但是当我用IE6测试的时候，JS总执行不下去了，提示“尚未实现”，无论怎么搞就搞不定。在firebug中也没有看到任何错误提示。打开IE就遇到该死的“尚未实现错误”，根据IE中提示的位置找过去也没有发现任何错误，看来IE的报错定位也不太准确。万般无奈之下，google搜索，终于找到了错误所在的地方。原来错误在于window.onload= myFunc(var1,var2);IE的window.onload函数中不支持参数调用，虽然函数会照样执行，但是却会出现报错，影响后续脚本的继续执行，下面是两种简单而有用的解决办法： 再写一个函数，譬如function loadFunc(){ myFunc(var1,var2) },然后window.onload = loadFunc; 使用匿名函数。onload =function(){myFunc(var1,var2)} 足够了，就这两种方法。]]></description>
			<content:encoded><![CDATA[<p>被该死的IE给搞惨了，耽误了很多时间，实在不划算。打开页面的时候，FF下一切正常，但是当我用IE6测试的时候，JS总执行不下去了，提示“尚未实现”，无论怎么搞就搞不定。在firebug中也没有看到任何错误提示。打开IE就遇到该死的“尚未实现错误”，根据IE中提示的位置找过去也没有发现任何错误，看来IE的报错定位也不太准确。万般无奈之下，google搜索，终于找到了错<a href="http://chaochao.blogbus.com/logs/5474171.html" target="_blank">误所在的地方</a>。原来错误在于window.onload= myFunc(var1,var2);IE的window.onload函数中不支持参数调用，虽然函数会照样执行，但是却会出现报错，影响后续脚本的继续执行，下面是两种简单而有用的解决办法：</p>
<ol>
<li>再写一个函数，譬如function loadFunc(){ myFunc(var1,var2) },然后window.onload = loadFunc;</li>
<li>使用匿名函数。onload =function(){myFunc(var1,var2)}</li>
</ol>
<p>足够了，就这两种方法。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2008/1516_javascript-has-not-yet-been-achieved-the-wrong-solution.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>让广告远离朋友</title>
		<link>http://www.storyday.com/html/y2007/1373_let-advertising-away-from-friends.html</link>
		<comments>http://www.storyday.com/html/y2007/1373_let-advertising-away-from-friends.html#comments</comments>
		<pubDate>Fri, 28 Dec 2007 01:27:39 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.storyday.com/html/y2007/1373_%e8%ae%a9%e5%b9%bf%e5%91%8a%e8%bf%9c%e7%a6%bb%e6%9c%8b%e5%8f%8b.html</guid>
		<description><![CDATA[在blog里面放点google广告，偶尔有那么几刀的收入也是很不错的，不过牛皮癣似的的广告可不是一个友好的显示方式，所以我一直都在对blog中的广告进行优化再优化，希望能做到更加和谐。今天，我做了一个重大的改动，那就是对于老访客，blog中的广告一律不再显示。 如果稍微熟悉一点js，实现这个效果一点都不困难，肯定有人也这样做过。我这里简单的说一下原理和实现方法。我们根据是否曾经留言来判断当前的访问用户是新用户还是老用户，当然这样可能不准确，因为凡是潜水的老用户都会被当作新用户。在wordpress中，访客留言之后都会自动生成一个cookie，用来记录当前留言者的信息，所以我们可以在js脚本文件中判断cookie是否存在，如果存在则隐藏掉广告，否则则显示之，下面是代码介绍。 这里是你的ads广告代码,在默认的情况下将其隐藏 然后在广告的后面写上下面的js代码即可 //显示某个标签的函数 function showIT(ele){ if(document.getElementById(ele) != null )document.getElementById(ele).style.display=''; } var custom_author_cookie = "< ?php echo 'comment_author_'.COOKIEHASH;?>"; if( readCosBetaCookie(custom_author_cookie).length < 1 ){ showIT('adv');//adv是当前广告所在DIV的ID } 大功告成！]]></description>
			<content:encoded><![CDATA[<p>在blog里面放点google广告，偶尔有那么几刀的收入也是很不错的，不过牛皮癣似的的广告可不是一个友好的显示方式，所以我一直都在对blog中的广告进行优化再优化，希望能做到更加和谐。今天，我做了一个重大的改动，那就是对于老访客，blog中的广告一律不再显示。</p>
<p>如果稍微熟悉一点js，实现这个效果一点都不困难，肯定有人也这样做过。我这里简单的说一下原理和实现方法。我们根据是否曾经留言来判断当前的访问用户是新用户还是老用户，当然这样可能不准确，因为凡是潜水的老用户都会被当作新用户。在wordpress中，访客留言之后都会自动生成一个cookie，用来记录当前留言者的信息，所以我们可以在js脚本文件中判断cookie是否存在，如果存在则隐藏掉广告，否则则显示之，下面是代码介绍。<span id="more-1373"></span><br />
<code>
<div id="adv" style="display:none">这里是你的ads广告代码,在默认的情况下将其隐藏</div>
<p><script>
//这个是获取cookie的函数
var aCookie = document.cookie.split("; ");
function readCosBetaCookie(CookieEleName)
{
  var cookieValue = "";
  for (var i=0; i < aCookie.length; i++){
	  var CookieArray = aCookie[i].split("=");
	  if (CookieEleName == CookieArray[0]){
			  cookieValue = unescape(decodeURI(CookieArray[1]));
	  }
}
  return cookieValue;
}
</script><br />
</script></code><br />
然后在广告的后面写上下面的js代码即可<br />
//显示某个标签的函数<br />
<code>function showIT(ele){<br />
if(document.getElementById(ele) != null )document.getElementById(ele).style.display='';<br />
}<br />
var custom_author_cookie = "< ?php echo 'comment_author_'.COOKIEHASH;?>";<br />
if( readCosBetaCookie(custom_author_cookie).length < 1 ){<br />
  showIT('adv');//adv是当前广告所在DIV的ID<br />
}<br />
</code><br />
大功告成！</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2007/1373_let-advertising-away-from-friends.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>分享一下第一次做WP模板的下拉菜单代码</title>
		<link>http://www.storyday.com/html/y2007/1320_share-wp-menus.html</link>
		<comments>http://www.storyday.com/html/y2007/1320_share-wp-menus.html#comments</comments>
		<pubDate>Fri, 30 Nov 2007 02:35:22 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.storyday.com/html/y2007/1320_share-wp-menus.html</guid>
		<description><![CDATA[首先看看下面的例子 可能有很多朋友和我以前的爱好一样，喜欢悬停的下拉菜单，所以这里我就将这个代码分享出来。代码分三个部分：1.wordpress模板代码；2.css代码；3.javascript代码。 wordpress模板代码 < ?php $mycat = $cat;//通过全局变量获取当前cat id $cat = get_category_parentID($cat);//获取父类ID，以保证在每页都显示全部分类 wp_list_cats('use_desc_for_title=1&#038;sort_column=id&#038;sort_order=desc&#038;children=1'); ?> 通过上面的代码，便可以将两级分类获取出来。 css代码根据个人模板不同的风格，你可能要对某些参数进行修改，下面是代码，解说将在注释中。 ul#navsite, #navsite ul { font: 12px Verdana, sans-serif; padding: 0; margin: 0; list-style: none; } #navsite li { float: left; /* 将li标签水平排列 */ text-align: center; } #navsite li ul { position: absolute; top: auto; left: -999em; /*隐藏 */ } [...]]]></description>
			<content:encoded><![CDATA[<p>首先看看下面的例子<iframe src='http://www.storyday.com/wp-content/uploads/2007/11/menu.html' width='600px' heigh='100px'></iframe><br />
可能有很多朋友和我以前的爱好一样，喜欢悬停的下拉菜单，所以这里我就将这个代码分享出来。代码分三个部分：1.wordpress模板代码；2.css代码；3.javascript代码。<span id="more-1320"></span></p>
<p><strong>wordpress模板代码</strong><br />
<code>
<div id="nav_a">
<ul id="navsite">
     < ?php<br />
        $mycat = $cat;//通过全局变量获取当前cat id<br />
	$cat = get_category_parentID($cat);//获取父类ID，以保证在每页都显示全部分类<br />
        wp_list_cats('use_desc_for_title=1&#038;sort_column=id&#038;sort_order=desc&#038;children=1');<br />
    ?>
  </ul>
</div>
<p></code>通过上面的代码，便可以将两级分类获取出来。</p>
<p><strong>css代码</strong>根据个人模板不同的风格，你可能要对某些参数进行修改，下面是代码，解说将在注释中。<br />
<code>ul#navsite,<br />
#navsite ul {<br />
    font: 12px Verdana, sans-serif;<br />
    padding: 0;<br />
    margin: 0;<br />
    list-style: none;<br />
    }<br />
#navsite li {<br />
    float: left;  /* 将li标签水平排列 */<br />
    text-align: center;<br />
    }</p>
<p>#navsite li ul {<br />
    position: absolute;<br />
    top: auto;<br />
    left: -999em; /*隐藏 */<br />
    }<br />
* > html #navsite li ul {  /* "Tan Hack" for IE Mac only */<br />
    display: none;<br />
    left: auto;<br />
    }<br />
#navsite li:hover ul,<br />
* html #navsite li.sfhover ul {  /* for IE-Win and other non-IE browsers */<br />
    left: auto;<br />
    }<br />
* > html #navsite li.sfhover ul { /* "Tan Hack" for IE Mac only */<br />
    display: block;  /* IE-Mac gets confused by the left:-999em rule, so we do this. */<br />
    border: 2px solid #778;  /* to visually confirm this rule is being used on IE-Mac */<br />
    }<br />
#navsite li ul li {<br />
    float: none;  /* sub-menu items will stack vertically as normal list */<br />
    text-align: left;<br />
    }<br />
#nav_a ul li  A {<br />
display:block;<br />
padding-top:4px !important;<br />
padding-top:8px;<br />
WIDTH: 130px;<br />
height:21px !important;<br />
height:21px;<br />
color:#ffffff;<br />
BACKGROUND:  red ;/*主菜单色调*/<br />
}</p>
<p>#nav_a ul li.current-cat  A ,#nav_a ul li.current-cat-parent  A {<br />
BACKGROUND: blue;<br />
color:#000;<br />
}<br />
#nav_a ul li ul.children {<br />
padding:0 0 5px 0;<br />
width:130px !important;<br />
width:127px;<br />
BACKGROUND: url(images/ulbt.gif) #ffffff no-repeat bottom left;</p>
<p>}<br />
#nav_a ul li ul.children li  A {<br />
BACKGROUND: blue;/*二级菜单背景颜色*/<br />
color:#fff;<br />
}<br />
#nav_a ul li ul.children li  A:hover {<br />
BACKGROUND: red;/*二级菜单鼠标悬停背景颜色*/<br />
color:#fff;<br />
}</p>
<p>av_a ul li ul.children li.current-cat  A ,#nav_a ul li ul.children li.current-cat-parent  A {<br />
BACKGROUND: green;<br />
color:#000;<br />
font-weight:bold;<br />
}<br />
#nav_a ul li ul li  A {<br />
display:block;<br />
padding-top:4px;<br />
width:130px;<br />
border:0;<br />
border-top:1px solid #999900;<br />
text-indent:4px;<br />
color:#ffffff;<br />
height:25px;<br />
BACKGROUND: url() #99cc00 no-repeat 0px 0px;<br />
}</code></p>
<p><strong>javascript代码</strong>由于IE不兼容某些css描述,因此这里要用到javascript来弥补之不足,代码如下:<br />
<code><script LANGUAGE="JavaScript">
<!--
	sfHover = function() {
    var sfEls = document.getElementById("navsite").getElementsByTagName("li");
    for (var i=0; i<sfEls.length; i++) {
      sfEls[i].onmouseover=function() {
        this.className+=" sfhover";
      }
      sfEls[i].onmouseout=function() {
        this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
      }
    }
  }
  if (window.attachEvent) window.attachEvent("onload", sfHover);
  else { //IE 5.2 Mac does not support attachEvent
    var old = window.onload; 
    window.onload = function() { if (old) old(); sfHover(); } 
  }
//-->
</script></code></p>
<p>建议需要使用的兄弟直接在实例中进行修改:<a href='http://www.storyday.com/wp-content/uploads/2007/11/menu.html' title='menu.html'>menu.html</a></p>
<p>鸣谢:部分css代码借鉴了先辈的代码,而javascript则是直接copy过来使用的,由于很久以前使用的,所以忘记css部分代码和js全部代码的原创者是谁了.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2007/1320_share-wp-menus.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>IE下innerHTML奇怪的问题</title>
		<link>http://www.storyday.com/html/y2007/1316_js-compatibility.html</link>
		<comments>http://www.storyday.com/html/y2007/1316_js-compatibility.html#comments</comments>
		<pubDate>Mon, 26 Nov 2007 12:39:29 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.storyday.com/html/y2007/1316_js-compatibility.html</guid>
		<description><![CDATA[当innerHTML中含有html标签的时候，IE居然会将html标签的字母变成大小写，并且将标签中的属性引号给去掉了，下面是测试代码： &#60;div id=”test”&#62; &#60;div id=”intest”&#62;html&#60;/div&#62; &#60;/div&#62; &#60;input type=”button” value=”click me” onClick=”alert(document.getElementById(&#8216;test&#8217;).innerHTML)” /&#62; 所以正常显示应该是Firefox中“&#60;div id=”intest”&#62;html&#60;/div&#62;”而不是IE中的&#60;DIV id=intest&#62;html&#60;/DIV&#62; 测试如下： html]]></description>
			<content:encoded><![CDATA[<p>当innerHTML中含有html标签的时候，IE居然会将html标签的字母变成大小写，并且将标签中的属性引号给去掉了，下面是测试代码：</p>
<p>&lt;div id=”test”&gt;<br />
&lt;div id=”intest”&gt;html&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;input type=”button” value=”click me” onClick=”alert(document.getElementById(&#8216;test&#8217;).innerHTML)” /&gt;</p>
<p>所以正常显示应该是Firefox中“&lt;div id=”intest”&gt;html&lt;/div&gt;”而不是IE中的&lt;DIV id=intest&gt;html&lt;/DIV&gt;</p>
<p>测试如下：</p>
<div style="1px solid #333;background:#eee">
<div id="test">
<div id="intest">html</div>
</p></div>
<input type="button" value="click me" onClick="alert(document.getElementById('test').innerHTML)" />
<hr />
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2007/1316_js-compatibility.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

