You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中替换</blockquote>为<br/>失效问题求助

问题解决:jQuery text()获取内容后替换</blockquote>失效的原因及方案

核心原因

你用text()方法获取的是DOM元素渲染后的纯文本内容,而非原始的HTML源码字符串。页面中你写的&lt;blockquote&gt;和&lt;/blockquote&gt;是HTML实体,浏览器解析后会将它们转换为真实的<blockquote>标签,而非保留为&lt;/blockquote&gt;文本。因此text()拿到的内容里根本不存在&lt;/blockquote&gt;这个字符串,替换自然不会生效。

而你直接测试的字符串是原始的包含&lt;/blockquote&gt;的文本,所以替换能正常工作。

解决方法

把text()换成html()方法,获取原始的HTML内容(包含你需要的&lt;/blockquote&gt;实体字符串),之后再进行替换操作:

修改后的JS代码:

$(document).on('ready', function() {
  $('.quoteMsg').click(function() {
    // 用html()替代text()获取原始HTML内容
    var txt = $(this).closest('.replyBox').find('.replyMsg').html();    
    txt = txt.replace(/&lt;\/blockquote&gt;/gi, '&lt;br/&gt;');
    
    txt = txt.replace(/(?:\r\n|\r|\n)/g, ' ');
    console.log(txt);
    $("textarea[name='quote']").val($.trim('[quote]' + txt + '[/quote]'));
  });
});

额外说明

如果最终需要在textarea中显示换行(而非&lt;br/&gt;实体),可以把替换目标换成\n,这样textarea里会显示自然换行:

txt = txt.replace(/&lt;\/blockquote&gt;/gi, '\n');

如果要后续在PHP中转成<br/>,也可以先替换成自定义标记,再在PHP中处理:

// JS中替换为自定义标记
txt = txt.replace(/&lt;\/blockquote&gt;/gi, '[NEWLINE]');
// PHP中转换为<br/>
$txt = str_replace('[NEWLINE]', '<br/>', $_POST['quote']);

内容的提问来源于stack exchange,提问作者newbie.user88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 17:45:37