javascript - 在 div 中使用换行符而不是 \n 打印 JS 对象
问题描述
我在 div 中打印一些 JS 对象。JS 对象的键值是带有换行符的字符串。
细绳
one
two
three
div 中的期望值:
one
two
three
我在 div 中得到了什么
one\ntwo\nthree
代码:
const textarea = document.querySelector("#textarea");
const log = document.querySelector("#log");
textarea.addEventListener('keypress', (event)=>{
log.innerHTML = JSON.stringify({name:event.target.value});
});
<div id="log"></div>
<textarea name="" id="textarea" cols="30" rows="10"></textarea>
解决方案
JSON 中不允许使用换行符;JSON.stringify
永远不会产生带有文字换行符的字符串。使用换行符对某些内容进行字符串化将导致输出字符串包含文字反斜杠字符,后跟文字n
字符,这就是您在此处看到的内容。
如果您确实需要JSON.stringify
,请将其中的所有\n
s 替换为实际的换行符。
另一个问题是,对于大多数元素,换行符通常不会在呈现的 HTML 中产生实际的换行符。您可以使用 a<pre>
而不是 a <div>
,因为<pre>
s确实将其内容中的换行符呈现为实际的换行符:
const textarea = document.querySelector("#textarea");
const log = document.querySelector("#log");
textarea.addEventListener('keypress', (event) => {
log.textContent = JSON.stringify({
name: event.target.value
})
.replace(/\\n/g, '\n');
});
<pre id="log"></pre>
<br>
<textarea name="" id="textarea" cols="30" rows="10"></textarea>
(请记住,#log
元素的内容将不是有效的 JSON - 您将无法复制其内容和JSON.parse
它)
推荐阅读
- javascript - Redux 状态在我访问它时没有更新
- django - 如何使用 django 查询集获取列中所有先前值的逐行总和
- json - 如何在asp.net核心中返回空的json数组
- typescript - 将父子结构展平为解析为数组的 BehaviorSubject
- typescript - 打字稿,@types/gulp gulp 4,浏览器同步
- ios - 如何在 UIPageViewController 中的视图控制器之前、之后删除?
- c# - 使用 nunit 报告 Specflow 测试的名称、步骤和状态
- reactjs - 是否可以在 React 项目的 scss 文件中使用 svg 文件?
- javascript - 打字稿:在时间戳上增加一小时
- php - laravel php str_replace函数用2个不同的值替换2个不同的值