<div id="d">
<span>第一行字</span>
<span>第二行字</span>
<span>第三行字</span></div>
<script>
var str=document.getElementById("d").innerHTML;
document.getElementById("d").innerHTML=str.replace(/()/gi,"<font color=red>$1</font>");
alert(document.getElementById("d").innerHTML);
</script>
结果:
<SPAN>第一行字</SPAN> <SPAN>第二行字</SPAN> <SPAN>第三行字</SPAN>
问:
1.显示在网页上的<SPAN>为什么不被解析?
2.alert(...)时,正则表达式的匹配项为空时,<span>标签中的“<”和“>”为什么会被显示成lt和ht?而不直接显示“<”和“>”,如果正则表达式的匹配项不为空,显示“<”和“>”?
糊涂了 

解决方案 »

  1.   

    <span>是网页自身的标签一般解析但不显示,但是只是有效果,(因为在浏览器中所有标签都会被相应的解析)
    正则表达式无论什么都会显示出来,标签也是有编码的
      

  2.   

    原因是你把<span>这个标签拆开了,你仔细看alert出来的结果就知道了 不清楚LZ是否想要这样的效果
    <div id="d">
    <span>第一行字</span>
    <span>第二行字</span>
    <span>第三行字</span></div>
    <script>
    var str=document.getElementById("d").innerHTML;
    document.getElementById("d").innerHTML=str.replace(/<span>([^<]+)<\/span>/gi,"<span><font color=red>$1</font><\/span>");
    alert(document.getElementById("d").innerHTML);
    </script>