<html>  
<body>  
<span id="ospan">河中鱼类离奇死亡,下游居民频染怪病,沿岸植物不断变异,是残留农药?还是生化攻击?敬请关注今晚CCTV-10《科学探索》,即将播出的专题节目:《神秘的河边洗脚人--中国男足》</span>  
<INPUT TYPE="button" value="change" onclick="Test(document.getElementById('ospan'))">
</body>  
</html>  
<script>  
function Test(obj)  
{  
try{  
var selecter=window.getSelection();  
if(selecter!=null&&selecter.trim()!=""){  
obj.innerHTML = obj.innerHTML.replace(selecter,"<font color='red'>"+selecter+"</font>")}  
}catch(err){  
var selecter=document.selection.createRange();  
var s=selecter.text;  
if(s!=null&&s.trim()!=""){  
obj.innerHTML = obj.innerHTML.replace(s,"<font color='red'>"+s+"</font>")
}  
}  
}  String.prototype.trim=function()  
{  
return this.replace(/(^\s*)|(\s*$)/g,"");  
}  
</script>

解决方案 »

  1.   

    不要像textarea一样的<iframe >中,要直接显示在页面上的
      

  2.   

    发现一个问题,s_liangchao1s老师,如果上面段文字中后面有跟前面重复的,当我对后面的文字标红的时候,replace是替换掉了所有文本的第一个。所以,这还有个小BUG
    还有,如果遇到了
    河中<font color='blue'>鱼类</font><font color='blue'>离奇</font>死亡,下游居民频染怪病,沿岸植物不断变异,是残留农药?
    这样的文本,如果我选取所有蓝色部分时,是没有反应的
      

  3.   

    To:s_liangchao1s 你的代码如果字符串是这样的
    “abc efg abc”
    那么两个abc都会被着色这样的问题应该怎么处理
      

  4.   

    我已经专门又开了一帖讨论这个问题,请各位老师前往指教
    http://topic.csdn.net/u/20081009/14/64f5f887-b64c-4e1d-8937-bf5da2c425ee.html