Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 显示新线路<;br>;在数据库中具有时在浏览器中\n_Javascript_Html_Mongodb_Express_Ejs - Fatal编程技术网

Javascript 显示新线路<;br>;在数据库中具有时在浏览器中\n

Javascript 显示新线路<;br>;在数据库中具有时在浏览器中\n,javascript,html,mongodb,express,ejs,Javascript,Html,Mongodb,Express,Ejs,在mongo中,我有一个文档,其字段类似于reviewText:“这是第1行\n这是第2行”。我从一个文本区域中得到了它,因此\n在那里,因为用户按了enter键。我想在屏幕上用一个带换行符的div打印文本(如果他多次输入,最好只打印一个换行符)。我不知道怎么做,我没有在屏幕上看到任何\ns 我在EJS中执行,它只在一行上打印所有内容。这是浏览器中的第1行这是第2行 我的路线中有一些地方可以更新文档,如: .then(function(returnedReviews){

在mongo中,我有一个文档,其字段类似于
reviewText:“这是第1行\n这是第2行”
。我从一个
文本区域
中得到了它,因此
\n
在那里,因为用户按了enter键。我想在屏幕上用一个带换行符的div打印文本(如果他多次输入,最好只打印一个换行符)。我不知道怎么做,我没有在屏幕上看到任何
\n
s

我在EJS中执行
,它只在一行上打印所有内容。这是浏览器中的第1行这是第2行

我的路线中有一些地方可以更新文档,如:

    .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 />')
        })
.then(函数(returnedReviews){
log(“returnedReview”,returnedReviews);
returnedReviews.forEach(函数(e){
e、 momented=时刻(e.createdAt.getTime()).fromNow()
//e.reviewText=e.reviewText.replace(/\r?\n/g,
) })
我试着做我在评论中所做的。但很明显,这只是把

(文本)放在字符串中,而不是HTML。我希望有一种简单的方法来做到这一点


我希望在用户发送表单之前在
文本区域中点击enter键的屏幕上打印表单时看到换行符。如果用户连续多次点击enter键,则应该只有一个换行符。

首先,将换行符标准化,并将其减少为一个(符合您的要求):

这将使您的数据以标准形式显示。以特定方式显示该数据是模板的工作。我没有使用EJS,但从其示例代码看,以下内容似乎可以工作:

<div class = "displayReview">
  <% e.reviewText.split('\n').forEach(function(ln) {%>
     <%= ln %><br>
  <% } %>
</div>



在这种特殊情况下,可能在模板呈现数据后,数据本身会被丢弃,因此特别注意将数据操作与表示分离是一种形式,但这仍然是一种好习惯,使代码更易于以后修改。

首先,标准化换行符并将其减少为一个字符(符合您的要求):

这将使您的数据以标准形式显示。以特定方式显示该数据是模板的工作。我没有使用EJS,但从其示例代码看,以下内容似乎可以工作:

<div class = "displayReview">
  <% e.reviewText.split('\n').forEach(function(ln) {%>
     <%= ln %><br>
  <% } %>
</div>



在这种特殊情况下,可能在模板呈现数据之后,数据本身就被丢弃了,因此特别注意将数据操作与表示分离是一种形式,但这仍然是一种好习惯,使代码更容易在以后修改。

还值得一提的是,JavaScript并不是严格要求实现这一点的如果您能够修改.displayReview的CSS,则his(除非用户在一行中多次点击enter按钮,否则将有多个换行符)

这可以通过将空白属性更改为“预处理”、“预行”或“预环绕”来实现

例如:

.displayReview {
  white-space: pre-wrap;
}
从中,pre、pre-line和pre-wrap之间的差异如下

之前
保留空格序列,仅在源代码和
元素中的换行符处断行。
预先包装
保留空格序列。换行符处、换行符处以及填充行框所需的换行符处断行。
上线前
空格序列被折叠。换行符、换行符和填充行框所需的行被打断。

还值得一提的是,如果您能够修改.displayReview的CSS,则不需要严格使用JavaScript来实现这一点(除非用户连续多次点击enter按钮,否则会出现多个换行符)

这可以通过将空白属性更改为“预处理”、“预行”或“预环绕”来实现

例如:

.displayReview {
  white-space: pre-wrap;
}
从中,pre、pre-line和pre-wrap之间的差异如下

之前
保留空格序列,仅在源代码和
元素中的换行符处断行。
预先包装
保留空格序列。换行符处、换行符处以及填充行框所需的换行符处断行。
上线前
空格序列被折叠。换行符、换行符和填充行框所需的行被打断。

我在源代码中读到,你可以看到换行符。你可以使用
空白:pre;
来查看空格,但这不是我想要的。一个问题是,你可以看到用户点击很多空格的空格。我在源代码中读到,你可以看到换行符。你可以使用
空白:pre
查看空格,但这不是我想要的。一个问题是,你可以看到用户点击了很多空格的空格。哦,太晚了!我正在编写相同的示例。+1为你编写。哦,太晚了!我正在编写相同的示例。+1为你编写。
Sequences of whitespace are preserved. Lines are broken at newline characters, at <br>, and as necessary to fill line boxes.
Sequences of whitespace are collapsed. Lines are broken at newline characters, at <br>, and as necessary to fill line boxes.