我正在获取文本区域的内容并将其保存在变量中。但是我注意到,当我保存内容时,变量会忽略间距(换行)。我该如何解决。我希望变量存储所有新行和新标签的文本结构。我从文本区域保存内容的代码如下:
let content = document.getElementById('content').value
整个功能如下:
function mail(){
var options = document.getElementById('users').options
let content = document.getElementById('content').value
var emails = []
var regex = /\*user\*/gi
for(var i = 2; i < options.length; i++){
emails.push(options[i].innerHTML)
content = content.replace(regex, emails[i-2])
window.open(`mailto:${emails[i-2]}?subject=To ${emails[i-2]}&body=${content}`)
}
}
谢谢!!!任何帮助表示赞赏!
答案 0 :(得分:0)
如果在文本区域中输入了新行,则该变量确实包含新行。请记住,textarea会将文本自动换行以适合它,因此,如果您看到换行的文本,并不意味着文本中会有换行符。
<textarea id="content"></textarea>
<input type="button" value="submit" onclick="msg()">
<script>
function msg() {
let message = document.getElementById('content').value;
alert(message);
}
</script>
答案 1 :(得分:0)
实际上,空格和new lines
存在,但是因为您将content
放在html
(body{}
)中,所以它们是不可见的。
一些解决方案:
let content = document.getElementById('content').value.replace(/\n/g,"<br/>").replace(/ ( +)/g,function(a,b){var s="", i=0; for(;i<b.length;i++)s+=" "; return " "+s;});
或者这个:
let content = "<pre>"+document.getElementById('content').value+"</pre>"
或者这个:
let content = "<div style='white-space: pre'>"+document.getElementById('content').value+"</div>"
以上解决方案适用于身体为html
的情况。
编辑:
我想这会解决您的问题:
let content = escape(document.getElementById('content').value);