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

怎么使nodeValue支持html标签

2012-05-04 
如何使nodeValue支持html标签如何使nodeValue支持html标签。代码如下,运行后会使得“单元”变成“ b 单元 /

如何使nodeValue支持html标签
如何使nodeValue支持html标签。代码如下,运行后会使得“单元”变成“ <b> 单元 </b> ”,这样只是文字改了,没有使文字真正变粗,请问如何更改才能达到类似innerHTML的效果,支持html标签?
<html   xmlns= "http://www.w3.org/1999/xhtml ">
<head>
<title>
Node属性
</title>
</head>
<body>
<table   width= "100% ">
        <tr>
                <td>
                        单元格一
                </td>
        </tr>
        <tr>
                <td>
                        单元格二
                        <a   href= "# "> 单元格二内的a文本 </a>
                </td>
        </tr>
        <tr>
                <td>
                        单元格三
                </td>
        </tr>
</table>
<script   type= "text/javascript ">
function   f()   {
        var   t   =   document.body;
        for   (var   i   =   0;   i   <   t.childNodes.length;   i++)   {
                var   node   =   t.childNodes[i];
                Node(node);
        }
}

function   Node(parmNode)   {
        if   (parmNode.hasChildNodes())   {
                for   (var   i   =   0;   i   <   parmNode.childNodes.length;   i++)   {
                        var   node   =   parmNode.childNodes[i];
                        if   (node.nodeType   ==   3)   {
                                if   (node.nodeValue.length   >   1)   {
                                        node.nodeValue   =   node.nodeValue.replace( "单元 ",   " <b> 单元 </b> ");
                                }
                        }
                        if   (node.nodeName   ==   "A ")   break;
                        Node(node);
                }
        }


}

Array.prototype.remove   =   function(parm)   {
        var   i,   j;
        for(i   =   0;   i   <   this.length;   i++)   {
                if(this[i]   ==   parm)   {
                        for(j   =   i;   j   <   this.length   -   1;   j++)   {
                                this[j]   =   this[j+1];
                        }
                        this.length--;
                }
        }
}
window.attachEvent( "onload ",   f);
</script>
</body>
</html>

[解决办法]
用 replaceChild 更好一些:

function Node(parmNode) {
if (parmNode.hasChildNodes()) {
for (var i = 0; i < parmNode.childNodes.length; i++) {
var node = parmNode.childNodes[i];
if (node.nodeType == 3) {
if (node.nodeValue.length > 1)
{
var b = document.createElement( "B ");
b.innerHTML = node.nodeValue;
node.parentNode.replaceChild(b, node);
}
}
if (node.nodeName == "A ") break;
Node(node);
}
}
}
[解决办法]
nodeValue 类似于 innerText, 是文本格式, 当然不会变粗了...
< 和 > 被转义了...
[解决办法]
用 replaceChild 更好一些

支持,还是高人给的方案好。将高人给的稍微修改了一下:
function Node(parmNode) {
if (parmNode.hasChildNodes()) {
for (var i = 0; i < parmNode.childNodes.length; i++) {
var node = parmNode.childNodes[i];
if (node.nodeType == 3) {
if (node.nodeValue.length > 1)
{
var b = document.createElement( "span ");
b.innerHTML = node.nodeValue.replace( "单元 ", " <b> 单元 </b> ");
node.parentNode.replaceChild(b, node);
}
}
if (node.nodeName == "A ") break;
Node(node);
}
}
}

热点排行