Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何更改输出HTML标记<;b></b>;至<;strong></强>;?_C#_Javascript_Asp.net - Fatal编程技术网

C# 如何更改输出HTML标记<;b></b>;至<;strong></强>;?

C# 如何更改输出HTML标记<;b></b>;至<;strong></强>;?,c#,javascript,asp.net,C#,Javascript,Asp.net,如何将标签替换为特定div的标签 例: 你好! 使用javascript替换为 <div id="aaa">hello<strong>wow</strong>!</div> 你好哇! 请帮忙!提前谢谢 *****我之所以尝试这样做,是为了获得W3C验证,将输出HTML代码更改为。我可以这样做吗** 或者是否有任何解决方案可以使用ASP.NET+C来实现这一点?如果您使用jQuery,您可以这样做: $('b').replaceWith(fu

如何将标签替换为特定div的标签

例:

你好! 使用javascript替换为

<div id="aaa">hello<strong>wow</strong>!</div>
你好
请帮忙!提前谢谢

*****我之所以尝试这样做,是为了获得W3C验证,将输出HTML代码
更改为
。我可以这样做吗**


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

如果您使用jQuery,您可以这样做:

$('b').replaceWith(function() {
        return $('<strong>').html($(this).html());
});
$('b').replaceWith(函数(){
返回$('').html($(this.html());
});
只需下载或以某种方式包含jQuery库,就可以使用该代码段。

使用jQuery,您可以在父
div
容器元素的范围内找到所有
b
标记,然后用
strong
替换每个标记,并复制源标记的内部文本:

$('#aaa b').each(function() {
  $(this).replaceWith($('<strong>' + this.html() + '</strong>');
});
$('#aaab')。每个(函数(){
$(this.replace为($(''+this.html()+'');
});
给你:

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 );    
});
其中
toArray
是您首选的类似于阵列的阵列转换器函数。我使用以下函数:

function toArray( arrayLike ) { return [].slice.call( arrayLike ); }
现场演示:

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

您可以抓取某个元素下的所有
元素,将所有子节点移动到新的
元素,然后将
替换为

<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>

hellow23!
var container=document.getElementById(“aaa”)
var find=container.getElementsByTagName(“b”);
勇敢、坚强;
while(粗体=查找[0]){
strong=document.createElement(“strong”);
while(粗体,第一个孩子){
strong.appendChild(粗体,firstChild);
}
bold.parentNode.replaceChild(强,粗体);
}
每次可以设置
bold=find[0]
的原因是,当
元素从文档中删除时,它们也会从
节点列表中删除


请参阅最新版本。

使用正则表达式的解决方案:

var e = document.getElementById("aaa");
e.innerHTML = e.innerHTML.replace(/<b[^>]*>(.*?)<\/b>/ig, '<strong>$1</strong>');

只是出于兴趣,为什么?
做同样的事情,不同于前者是由屏幕阅读器解释的。@Samich OP没有指定jQuery…我之所以这样做是因为W3C。注意:W3C验证器不会执行JavaScript,所以如果您这样做只是为了验证文档,请记住在验证时,验证程序将只看到原始源代码,而不是修改后的DOM。
.html
如果标记包含其他标记,则可能是更好的选择,例如:
带强调标记
我也想到了这一点,我只是去查看文档。以防万一。:)为什么它在IE中不起作用?回答不错,不过学到了一两件事:)
forEach
在JS中是新的,请看@x3ro IE8没有实现
forEach
textContent
。人们可以使用
innerHTML
而不是
textContent
,并且
forEach
可以很容易地在IE8中手动实现,因此通过一些额外的努力,这也可以在IE8中工作。我可以将输出的HTML代码
更改为
?@浏览器中的用户(执行JavaScript),没有“输出HTML”。HTML源代码用作创建DOM树的输入。如果您需要对HTML源代码进行此更改(在将其发送到浏览器之前),则需要在服务器上进行此更改…不确定答案是否可行,因为问题并没有说jquery,它说的是javascript。我在第一句中提到了使用jQuery。如果出于某种原因,您将事件处理程序附加到
元素中的任何内容,那么使用
this.html()
+1将丢失它们,这是一种很好的方法。您甚至可以去掉
i
,然后执行
操作(bold=find[0]){
因为你的
find
列表会随着每次删除而更新。很好,@Patrick。那些动态的
NodeList
s会让你每次都更新。现在更新解决方案。啊,我甚至没有想到你会在更新列表中前进。不过,我个人会将它作为NodeList保留,不进行更新索引。这将使您无需跳过列表,它将更快,更兼容浏览器,因为您不能将节点列表(或任何主机对象)作为IE8或更低版本中
.slice()
的thisArg。
var e = document.getElementById("aaa");
e.innerHTML = e.innerHTML.replace(/<b[^>]*>(.*?)<\/b>/ig, '<strong>$1</strong>');
Array.forEach(elems, function() {  ... })