Javascript 在查找内容的div中添加文本

Javascript 在查找内容的div中添加文本,javascript,jquery,html,Javascript,Jquery,Html,我有一个id为content的div。我想在此divMy Company中搜索,然后在My Company之后添加商标>符号,该符号出现在div id=content中的任何位置。问题是文本我的公司并非总是以HTML格式显示为我的公司。它可能是My Company或My Company,我不知道如何在文本My Company后添加符号,即使其中包含html标记(如上所述) 我想用JS/Jquery实现这一点。非常感谢你 尝试: $("#content").each(function() {

我有一个id为
content
的div。我想在此div
My Company
中搜索,然后在
My Company
之后添加商标
>
符号,该符号出现在div id=
content
中的任何位置。问题是文本
我的公司
并非总是以HTML格式显示为
我的公司
。它可能是
My Company
My Company
,我不知道如何在文本
My Company
后添加
符号,即使其中包含html标记(如上所述)

我想用JS/Jquery实现这一点。非常感谢你

尝试:

$("#content").each(function() {
    var text = $(this).text();
    text = text.replace("My Company", "My Company®");
    $(this).text(text);
});
但只有当它是
我的公司
时才有效,而不是当它是
我的公司
我的公司

编辑

我有一个(单个)div#内容

示例

<div id="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi et nisl quam. Praesent semper enim elit, vel imperdiet ipsum vulputate ac. Curabitur lacinia vitae metus sit amet consectetur.

My Company

Sed metus risus, iaculis a erat id, pretium congue nisi. Phasellus tempor, massa lobortis scelerisque pharetra, orci metus ultrices quam, eu sodales massa erat ut ipsum. Vestibulum ullamcorper interdum pretium. My <span style="color: orange;">C</span>ompany Praesent mollis in ex in feugiat. Ut vitae placerat diam. 
</div>

Lorem ipsum dolor sit amet,是一位杰出的献身者。莫比和尼斯奎姆。事实上,这是一种致命的致命疾病,它的主要症状是死亡。
我的公司
这是一种风险,是一种风险,是一种风险。暂时性阶段、法雷特拉权杖、奥奇·梅特斯·乌尔里塞斯广场、欧盟共同市场。前庭前庭。我的公司在过去的几年里一直在做生意。这是我的生日。

您好,您可以这样添加,对吗

$("#content").each(function() {
    var text = $(this).text();
    if(text === 'My Company') {
       $(this).append('<span class="copyrightSymbol"> ® </span>');
    }
});
$(“#内容”)。每个(函数(){
var text=$(this.text();
如果(文本==‘我的公司’){
$(this.append(“®”);
}
});
这会奏效的。但是
#内容
在一个页面中只允许出现一次,因为它是一个Id。

试试这个

$("#content").each(function() {
    var text = $(this).text();
    text = text.replace(/My Company/g, "My Company®");
    $(this).text(text);
});
您之前所做的步骤是正确的,但是您错过了全局替换零件。 jQuery
text()
将只获取
div
标记内的文本部分。因此,无需担心正在包装的内部标签


JSFiddle:

这是您可以做到的

$(function(){
$('#content').each(function() {
    var text = $(this).text();
    $(this).text(text.replace('My Company', 'My Company®')); 
});

});
编辑:

$(".content").each(function() {
        var text = $(this).text();
        console.log(text);
        text = text.replace(/ +(?= )/g,'').replace(/My Company/g, "My Company®");
        $(this).text(text);
    });
如果您希望保留HTML,则更新的代码可能也会起作用

$(function(){
    var children = $('#content').children();
    children.each(function() {
    var text = $.trim($(this).text());
        if(text === 'My Company'){
            var getTagName = $(this).prop("tagName");
             var tagName = getTagName.toLowerCase();
             var replaceText = '<'+tagName+'>'+'My  Company®'+'</'+tagName+'>';
        $(this).html(replaceText); 
        }
       });
});
$(函数(){
var children=$('#content').children();
children.each(function(){
var text=$.trim($(this.text());
如果(文本==‘我的公司’){
var getTagName=$(this.prop(“标记名”);
var tagName=getTagName.toLowerCase();
var replaceText=''+'我的公司®'+'';
$(this.html(replaceText);
}
});
});

查看更新的小提琴

由于
我的公司

当div中有一个
标记时,我猜您的
HTML
类似于
My Company
,因此在
My
Company
之间有两个空格,您的字符串替换不适用于此

因此,必须首先用单个空间替换多个空间

也在这些条件下工作

My <font color="something">C</font>ompany

My <span style="something">C</span>ompany

演示:

如果“我的内容”周围有HTML标签,您需要首先将其去掉

然后用纯文本搜索它

如果找到了,你可以在最后附加一个商标

这还将保留“我的内容”的原始HTML标记

条件:您必须在div#CONTENT中有一个“我的内容”

代码

<div id="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi et nisl quam. Praesent semper enim elit, vel imperdiet ipsum vulputate ac. Curabitur lacinia vitae metus sit amet consectetur.

My Company

Sed metus risus, iaculis a erat id, pretium congue nisi. Phasellus tempor, massa lobortis scelerisque pharetra, orci metus ultrices quam, eu sodales massa erat ut ipsum. Vestibulum ullamcorper interdum pretium. My <span style="color: orange;">C</span>ompany Praesent mollis in ex in feugiat. Ut vitae placerat diam. 
</div>
基本上,我将创建一个HTML条函数来删除文本周围的额外HTML标记,然后按照下面的代码进行搜索

$(function(){
$('#content').each(function() {
    var text = $(this).html();
    console.log(text);
    console.log(stripHTML(text));
    if(stripHTML(text).indexOf("My Company")>-1)
    {
        alert("FOUND");
        $(this).html($(this).html() + "&reg;");
    }


});
function stripHTML(dirtyString) {
    var container = document.createElement('div');
    container.innerHTML = dirtyString;
    return container.textContent;
}
});

如果希望页面上有多个具有相同样式的div,请使用类

$("#content").each(function() {
    var text = $(this).html();
    text = text.replace(/My Company/g, "My Company<sup>®</sup>");
    text = text.replace(/My (<\/?span[^>]*>C\<\/span\>ompany)/g, "My Company<sup>®</sup>");
    text = text.replace(/My (<\/?font[^>]*>C\<\/font\>ompany)/g, "My Company<sup>®</sup>");
    $(this).html(text);
});
$(“#内容”)。每个(函数(){
var text=$(this.html();
text=text.replace(/My Company/g,“My Company®”);
text=text.replace(/My(]*>C\ompany)/g,“My Company®”);
text=text.replace(/My(]*>C\ompany)/g,“My Company®”);
$(this).html(文本);
});

id=content的div有多少个?
你不能有多个#content id。你能亲自展示你的html部分吗?我希望修复底层内容,而不是笨拙的jasvascript修复。如果
我的公司
是一个样式一致的东西,请使用适当的类将其封装在
中,然后可以使用
:first letter
()为第一个字母设置样式,并在
之后使用
:添加HTML格式的TM或CSS格式的TM。没有javascript,没有内容闪存或文本回流。@LelioFaieta我只有一个id为
content
的div。只有当字符串正好是“我的公司”时,这才有效。OP问了一些不同的问题,PP想在我的公司内部内容后添加商标符号。我想这会管用的。请建议。他不想改变它的结构。这也是它的工作方式。当HTML像这样时,Workup也要求附加它。
My Company或My Company
Hi我已经在本地签了名。这对我来说很好。如果有任何疑问,请制作一个js fiddle链接,我们将对此进行处理,但这将改变他以前文本中“C”的结构。span将被文本替换,对吗?@downvoter:请说明您的downvote原因?可能是更新的代码也会保留html?如果我错了,请纠正我hi@IdentityUnkn0wn如果我的HTML结构不是这样的哦…是的,可能是可以用一些复杂的正则表达式来完成的,这不是我的强项,但是如果它在同一个标记中,可能是这样的:(这是替换第二个“我的公司”的HTML标记)