在mongo中,我有一个文档,其字段如reviewText: 'this is line 1\nthis is line 2',
。我是从textarea
那里得到的,所以\n
在那儿是因为用户按下回车键。我想以换行符在div上在屏幕上打印文本(如果他打了很多回车,最好只有一个换行符)我不知道该怎么做,我不会在屏幕上看到任何\n
我在EJS中执行<div class = "displayReview"><%= e.reviewText %></div>
,将其全部打印在一行上。它使我在浏览器中成为<div class="displayReview">this is line 1 this is line 2</div>
。
我的路线上某处可以更新文档,例如:
.then(function(returnedReviews){
console.log(" returnedReview ",returnedReviews);
returnedReviews.forEach(function(e){
e.momented = moment(e.createdAt.getTime()).fromNow()
// e.reviewText = e.reviewText.replace(/\r?\n/g, '<br />')
})
我试图做我在评论中所拥有的。但这显然只是将
<br />
(文本)放在字符串而不是HTML中。我希望有一个简单的方法可以做到这一点。我想在将其打印到用户在发送表单之前在
textarea
中输入回车的屏幕上查看换行符。如果用户连续多次按下Enter键,则应该只有一个换行符。 最佳答案
首先,标准化换行符并将其减少为一个(符合您的要求):
e.reviewText = e.reviewText.replace(/\r?\n/g, '\n');
e.reviewText = e.reviewText.replace(/\n+/g, '\n');
这会将您的数据以标准格式显示。以特定方式显示数据是模板的工作。我还没有使用过EJS,但是看看他们的示例代码,看起来似乎应该行得通:
<div class = "displayReview">
<% e.reviewText.split('\n').forEach(function(ln) {%>
<%= ln %><br>
<% } %>
</div>
在这种特殊情况下,也许在模板渲染数据之后,数据本身就被丢弃了,因此特别注重将数据处理与表示分离开来是一种形式,但它仍然是一个好习惯,并且使以后的代码修改更容易。
关于javascript - 数据库中有\n时,在浏览器中显示新行<br>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38680104/