如何将输出HTML标记<b> </ b>更改为<strong> </ strong>?

use*_*581 4 javascript c# asp.net

如何<b></b><strong></strong>标签替换标签到特定的div?

例如:

<div id="aaa">hello<b>wow</b>!</div>
Run Code Online (Sandbox Code Playgroud)

使用javascript替换

<div id="aaa">hello<strong>wow</strong>!</div>
Run Code Online (Sandbox Code Playgroud)

请帮忙!提前致谢.

在此输入图像描述

*****为什么我要尝试将输出HTML代码更改<b></b><strong></strong>,以获得W3C验证.我能这样做吗?**

或者是否有任何解决方案可以使用ASP.NET + C#来做到这一点?

Šim*_*das 5

干得好:

var root, elems;

root = document.getElementById( 'test' );
elems = root.getElementsByTagName( 'b' );

toArray( elems ).forEach( function ( elem ) {
    var newElem = document.createElement( 'strong' );
    newElem.textContent = elem.textContent;
    elem.parentNode.replaceChild( newElem, elem );    
});
Run Code Online (Sandbox Code Playgroud)

toArray你最喜欢的数组到数组转换器函数在哪里.我用这个:

function toArray( arrayLike ) { return [].slice.call( arrayLike ); }
Run Code Online (Sandbox Code Playgroud)

现场演示: http ://jsfiddle.net/mJSyH/3/

注意:此代码在IE8中不起作用.

  • @ x3ro IE8没有实现`forEach`和`textContent`.可以使用`innerHTML`而不是`textContent`,并且可以在IE8中轻松地手动实现`forEach`,所以通过一些额外的努力,这也可以在IE8中使用. (2认同)

Chr*_*alo 5

您可以获取<b>某个元素下的所有元素,将所有子节点移动到一个新<strong>元素,然后将其替换<b><strong>.

<div id="aaa">hello<b>wow</b><b>2</b><b>3</b>!</div>

<script>
  var container = document.getElementById("aaa")
  var find = container.getElementsByTagName("b");
  var bold, strong;

  while (bold = find[0]) {
    strong = document.createElement("strong");

    while (bold.firstChild) {
      strong.appendChild(bold.firstChild);
    }

    bold.parentNode.replaceChild(strong, bold);
  }
</script>
Run Code Online (Sandbox Code Playgroud)

bold = find[0]每次都可以设置的原因是,当<b>从文档中删除元素时,它们也会从文档中删除NodeList find.

请访问http://jsbin.com/eqikaj/13/edit查看最新版本.