其实这个事情有很多次都知道会这种现象存在,因为这一次是利用正则解析页面的某段HTML代码,因此对于是否“原样”获取HTML至关重要。

“原样”

对于innerHTML属性来讲是否能够真正“原样”获取所需要的HTML片断呢?其实不然,innerHTML获取的是运行时HTML(即:已经被渲染过的代码),我们可以先做个简单的实验:

<table><tr><td>test</td></tr></table>

这是很简单的表格HTML代码,当你尝试obj.innerHTML发现获取的结果会自动加入<tbody>标签。这是所有浏览器都会做的,你不要以为FF或Chrome就是原样了。
我很爱现,因为讲到这个时我就想到zoom这是IE特色,他可以帮助我们对某个节点重新渲染。因此他可以帮助我解决一些问题,特别CSS上面的,而这里恐怖用不上。
既然从innerHTML原样做不到,而以下有几种办法可以帮助我解决我要的问题:

解决办法

注释法:将所需要的HTML片断用“<!– –>”注释掉,至少目前所有的浏览器对注释的HTML片断不做渲染。同样跟放在textarea中,还是注释来得更真实一些。
改变读取方式:这一点可能要跟自己的需求而定,目前第三方的javscript框架对XHTML的解析非常方便,我的意思你明白的。