如何包装a<;sup>;大约®;用香草JavaScript?

如何包装a<;sup>;大约®;用香草JavaScript?,javascript,Javascript,当前jQuery如下所示: jQuery(function($) { $('body :not(script,sup)').contents().filter(function() { return this.nodeType === 3; }).replaceWith(function() { return this.nodeValue.replace(/[®]/g, '<sup>$&</sup>'); }); }); <

当前jQuery如下所示:

jQuery(function($) {
  $('body :not(script,sup)').contents().filter(function() {
     return this.nodeType === 3;
  }).replaceWith(function() {
      return this.nodeValue.replace(/[®]/g, '<sup>$&</sup>');
  });
});
<div>test®</div>
jQuery(函数($){
$('body:not(script,sup)').contents().filter(function()){
返回this.nodeType==3;
}).replaceWith(函数(){
返回此.nodeValue.replace(/[®]/g,'$&');
});
});
这是StackOverflow问题,我发现了:

问题是这样的: 我有这样一个文本:

jQuery(function($) {
  $('body :not(script,sup)').contents().filter(function() {
     return this.nodeType === 3;
  }).replaceWith(function() {
      return this.nodeValue.replace(/[®]/g, '<sup>$&</sup>');
  });
});
<div>test®</div>
test®
但需要对此进行修改:

<div>test<sup>®</sup></div>
test®

这需要在带有®符号的所有位置发生。这怎么可能存档?

因为@epascarello给我的回复,我让它工作了:

document.addEventListener("DOMContentLoaded", function(event) {
    document.body.innerHTML = document.body.innerHTML.replace(/®/g, '<sup>®</sup>');
});
document.addEventListener(“DOMContentLoaded”),函数(事件){
document.body.innerHTML=document.body.innerHTML.replace(/®/g,''');
});

如果切换这段代码,从jQuery切换到vanilla Javascript的速度会有很大的提高。我们测量到它比jQuery代码快1到2倍

请注意:
这将替换页面上所有出现的字符
>
。(即使是在链接、脚本等中)。

那么你是在试图查找html中所有不支持的®吗?@Brad是的,当然,但我就是不知道如何查找。我找了一个小时,但找不到解决办法。我是JavaScript新手,所以对有JavaScript经验的人来说这可能是显而易见的,但我的JavaScript很差。@epascarello是的,这就是我试图做到的。@epascarello非常感谢你的这篇文章,正因为如此,我才让它起作用。希望它不是输入值或属性no,不是。这是一个标题。这也只能在特殊页面上执行。这是一种很糟糕的方式来实现你的愿望。会的。如果你想要一些代码可以做你想要的,你可以在中修改代码,或者。@Makyen感谢所有的链接,这些都很好地解释了为什么我做的不好。@YoKoGFX np。我很高兴他们的帮助。不幸的是,你所做的是相当普遍的。人们被教导或学习,他们可以使用
.innerHTML
对HTML文本进行修改,并在逻辑上扩展其使用范围,远远超过合理使用
.innerHTML
的情况。主要问题是,在解释
.innerHTML
属性时,没有传达使用该属性的潜在缺点/副作用。基本上,分配
.innerHTML
时应该非常小心,如果您关心以前的内容,则几乎不会这样做。