gpt4 book ai didi

javascript - 如何正确替换
 元素的内容

转载 作者:行者123 更新时间:2023-12-03 10:14:55 25 4
gpt4 key购买 nike

如何使用 jQuery(甚至纯 JS)将给定字符串解析为 HTML,然后替换所有 <pre> 的内容生成的 DOM 中的元素(无需对其中的实体进行编码/解码)并将其转换回字符串?

例如,假设我将以下 HTML 存储为字符串:

<p>HTML block</p>
<pre>
<body>
<h1>Hello World</h1>
<p>Hi</p>
</body>
</pre>

我想把所有\n字符输入 <br/> ,这样输出字符串将是:

<p>HTML block</p>
<pre><br/><body><br/><h1>Hello World</h1><br/><p>Hi</p></br></body><br/></pre>

请注意<pre>元素中可以包含任何内容,包括其他嵌套元素或脚本。

我尝试使用$.parseHTML()但由于某种原因,它会删除某些嵌套元素(例如, <body> 内的 <pre> )

最佳答案

我知道 RegEx 不是最好的 但我稍后会添加 DOM 解决方案 假设string是你的字符串

string.replace(/(?:\<pre[\S\s]*?\>)([\S\s]*?)(?:\<\/pre\>)/, string.match(/(?:\<pre[\S\s]*?\>)([\S\s]*?)(?:\<\/pre\>)/)[1].replace(/\n/g, '<br/>'));


DOM解析器

var d = (new DOMParser).parseFromString(string, 'text/html');
d.getElementsByTagName('pre')[0].innerHTML = d.getElementsByTagName('pre')[0].innerHTML.replace(/\n/g, '<br/>');

d 类似于 document,您可以将此元素放置在 DOM 结构中。

<小时/>

要使其成为字符串,您可以执行以下操作:

var d = (new DOMParser).parseFromString(string, 'text/html'); d.getElementsByTagName('pre')[0].innerHTML.replace(/\n/g, '<br/>');
var newstring = d.body.innerHTML;

这将创建一个新变量,newstring,它是结果字符串

关于javascript - 如何正确替换 <pre> 元素的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29932182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com