jac*_*ank 1 html javascript ejs mongodb express
在 mongo 中,我有一个带有类似reviewText: 'this is line 1\nthis is line 2',. 我从 a 那里得到了这个textarea,\n因为用户按下了 Enter 键。我想在屏幕上打印带有换行符的div中的文本(如果他点击了很多输入,最好只有一个换行符)我不知道该怎么做,因为我没有在屏幕上看到任何\ns
我<div class = "displayReview"><%= e.reviewText %></div>在 EJS 中做的只是将其全部打印在 oneline 上。它让我<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 />')
})
Run Code Online (Sandbox Code Playgroud)
我尝试做评论中的事情。但显然只是将<br />(文本)放入字符串中,而不是 HTML 中。我希望有一种简单的方法可以做到这一点。
我希望在将其打印到屏幕上时看到换行符,用户在textarea发送表单之前按 Enter 键。如果用户连续多次点击回车按钮,则应该只有一个换行符。
首先,标准化换行符并将其减少到只有一个(根据您的要求):
e.reviewText = e.reviewText.replace(/\r?\n/g, '\n');
e.reviewText = e.reviewText.replace(/\n+/g, '\n');
Run Code Online (Sandbox Code Playgroud)
这会将您的数据置于标准形式。以特定方式显示该数据是模板的工作。我没有使用过 EJS,但是看看他们的示例代码,看起来这些代码应该可以工作:
<div class = "displayReview">
<% e.reviewText.split('\n').forEach(function(ln) {%>
<%= ln %><br>
<% } %>
</div>
Run Code Online (Sandbox Code Playgroud)
在这种特殊情况下,也许在模板渲染数据之后,数据本身就被丢弃了,所以特别注意将数据操作与表示分离只是一种形式,但这仍然是一个好习惯,并且使代码更容易稍后修改。