首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

给文本加上<font>标签的有关问题

2012-02-17 
给文本加上font标签的问题htmlxmlns http://www.w3.org/1999/xhtml headtitle 色测试 /title

给文本加上<font>标签的问题
<html   xmlns= "http://www.w3.org/1999/xhtml ">
<head>
        <title> 色测试 </title>

        <script   language= "javascript "   type= "text/javascript ">
        function   SetKeyColor(key,   color,   idStr)
        {
                if(color   ==   null   ||color   ==   " ")
                {
                        color   =   "red ";
                }
                SetNode(document.body,   key,   color,   idStr)
        }
        function   SetNode(obj,   key,   color,   idStr)
        {
                if(obj.hasChildNodes()   &&   obj.nodeType!=3)
                {
                        var   childNodes   =   obj.childNodes;
                        for(var   i=0;   i <childNodes.length;   i++)
                        {
                                SetNode(childNodes[i],   key,   color,   idStr);
                        }
                }
                else
                {
                        if(obj.nodeName   ==   "#text "   &&   obj.nodeValue.replace(/^\s*|\s*$/g, " ")   !=   " ")
                        {
                                var   pid   =   obj.parentNode.id;
                                if(pid.indexOf(idStr)   >   -1)
                                {
                                        obj.nodeValue   =   obj.nodeValue.replace(new   RegExp(key, "g "), " <font   color=red> "   +   key   +   " </font> ")
                                        //alert(pid   +   "\r\n "   +   obj.nodeValue);
                                }
                        }


                }
        }
        </script>

</head>
<body>
        <div   id= "a ">
                ss   <span> aa </span>   <span> bb </span>
        </div>
</body>
</html>

<script   language= "javascript "   type= "text/javascript ">
SetKeyColor( 's ', 'green ', 'a ');
</script>

要的结果是ss   aa   bb,其中ss是红色的,但最后在页面中却显示这样的文字: <font   color=red> s </font> <font   color=red> s </font>   aa   bb,请问如何解决?

[解决办法]
SetKeyColor( 'ss ', 'green ', 'a ');你传2个s ya

replace(new RegExp(key, "g "), " <font color=red> " + key + " </font> ")这不是你自己写的

[解决办法]
替换的那句换下
obj.nodeValue = obj.nodeValue.replace(new RegExp(key+ "+ ", "g "), " <font color=red> " + key + " </font> ")
[解决办法]
如果key 是 sasa 呢?
[解决办法]
那只好换了,:)
obj.nodeValue = obj.nodeValue.replace(new RegExp( "( "+key+ ")+ ", "g "), " <font color=red> " + key + " </font> ")
不过楼主这样遍历确实不好,对象多了比较慢

[解决办法]
版主的写法测试过吗?为什么我这用没有效果
[解决办法]
TO xiaolei1982
版主的写法测试过吗?为什么我这用没有效果

-----------------------------
晕,我理解错了,以为楼主是想把字符串打出来把中间的标签去掉就行,原来是要把颜色显示出来
[解决办法]
hbhbhbhbhb1021(天外水火(我要多努力))
new RegExp( "( "+key+ ")+ ", "g ")


()+ 这种可以吗?()里面的可以重复?好像没这种用法吧
[解决办法]
可以用的,
<script language=javascript>
var str= "sasa "
re=/^(sa)+$/
alert(re.test(str))

</script>
不过那句没测试,要改成下面这样才能全部显示出来
obj.nodeValue = obj.nodeValue.replace(new RegExp( "(( "+key+ ")+) ", "g "), " <font color=red> $1 </font> ")

楼主的这个程序,最好在 ss那也加个标签,这样修改标签的className感觉要比遍历好
[解决办法]
<script>

var a= 'sasabsasasabsa '

alert(a.replace(/(sa)+/g, " "))

</script>

果然
[解决办法]
obj.nodeValue = obj.nodeValue.replace(new RegExp(key, "g "), " <font color=red> " + key + " </font> ")
str=obj.parentNode.outerHTML.toString()
str=str.replace(new RegExp( "&lt; ", "g "), " < ")
str=str.replace(new RegExp( "&gt; ", "g "), "> ")
obj.parentNode.outerHTML=str
这样就可以显示颜色了,比较笨!-_-
------解决方案--------------------


感觉我的方法比较笨,版主有好的方法吗?感觉应该会有吧

热点排行