Javascript函数:使用换行符作为\n而不是实际呈现它们
我正在开发一个函数,该函数从textarea输入接收文本,目的是保留换行符。然后,函数将文本作为函数的参数,例如:Javascript函数:使用换行符作为\n而不是实际呈现它们,javascript,newline,Javascript,Newline,我正在开发一个函数,该函数从textarea输入接收文本,目的是保留换行符。然后,函数将文本作为函数的参数,例如:函数get_text(val){…}。 从textarea接收的值为: $('#textarea').val(); 这样,只要单击按钮,文本区域中的值就会传递给get_text()函数,例如: $('#button').click(function(){ get_text($('#textarea').val()); }); get_text($('#textarea')
函数get_text(val){…}
。
从textarea接收的值为:
$('#textarea').val();
这样,只要单击按钮,文本区域中的值就会传递给get_text()
函数,例如:
$('#button').click(function(){
get_text($('#textarea').val());
});
get_text($('#textarea').val());
--- should result to ---
get_text('My\ntext\nis\nhere');
--- instead of actually outputting the newlines ---
然后该函数将使用保留的换行符,因为该值来自textarea。
但问题就出在这里,当我将textarea的值传递给get_text()
函数时,控制台中会出现一个错误,指出:意外标识符,因为参数已拆分为几行,例如:
$('#button').click(function(){
get_text($('#textarea').val());
});
get_text($('#textarea').val());
--- should result to ---
get_text('My\ntext\nis\nhere');
--- instead of actually outputting the newlines ---
如果输入中的文本为:
(第1行)我的
(第2行)文本
(第3行)是
(第4行)此处
函数获取文本并输出换行符:
get_text("My --- (×)Error appears here
text
is
here");
我试图在函数中使用textarea中的换行符,该函数在遇到每个换行符后执行某些任务,因此,除非有其他方法执行任务,否则不能选择删除换行符
这里唯一的问题实际上是将文本传递到函数中,例如:
$('#button').click(function(){
get_text($('#textarea').val());
});
get_text($('#textarea').val());
--- should result to ---
get_text('My\ntext\nis\nhere');
--- instead of actually outputting the newlines ---
这与功能配合得很好。
是否有一种方法可以将文本传递给函数而不打印换行符,而是将其显示为\n
这是get_text函数:
function get_text(val){
let n = /[\n]/;
let i;
let inner = [];
for(i = 0; i < val.length; i++){
inner.push('<span>' + val[i] + '</span>';
if(n.test(val[i]) == true){
inner.push('<span class="newline">' + val[i] + '</span>';
}
}
return inner.join("");
}
函数获取文本(val){
设n=/[\n]/;
让我;
让内部=[];
对于(i=0;i
同样,问题不在函数中,只有当值传递给函数时,它才会被拆分为行……不,我没有使用eval
是的,我只是在从表单中获取错误后才得到它
模板文字语法允许字符串跨多行,使用“backticks”作为容器,这应该可以避免您的问题。我仍然建议您转义字符串和/或不要像那样混合服务器端模板代码和JavaScript代码,特别是不要将表单数据作为JS代码逐字嵌入。您至少可以使用json\u encode
或类似的方法对其进行编码
您还可以使用表单数据的JSON.stringify
,然后使用JSON.parse
let val=`My
测试
是
这里`;
获取文本(`My
文本
是
这里`);
您缺少parens,并且没有使用。测试
正确。它接受字符串,而不是布尔比较,如果匹配,则返回布尔值。另外,如果您想要换行符,您应该使用
。在
中放置新行只会折叠。它不会在渲染输出中插入换行符。除非您使用了一些CSS样式,例如为您换行的浮点换行符
函数获取文本(val){
设n=/[\n]/;
让我;
让内部=[];
for(设i=0;i
.newline::after{
内容:'\\n'
}
模板文字语法允许字符串跨多行,使用“backticks”作为容器,这应该可以避免您的问题。我仍然建议您转义字符串和/或不要像那样混合服务器端模板代码和JavaScript代码,特别是不要将表单数据作为JS代码逐字嵌入。您至少可以使用json\u encode
或类似的方法对其进行编码
您还可以使用表单数据的JSON.stringify
,然后使用JSON.parse
let val=`My
测试
是
这里`;
获取文本(`My
文本
是
这里`);
您缺少parens,并且没有使用。测试
正确。它接受字符串,而不是布尔比较,如果匹配,则返回布尔值。另外,如果您想要换行符,您应该使用
。在
中放置新行只会折叠。它不会在渲染输出中插入换行符。除非您使用了一些CSS样式,例如为您换行的浮点换行符
函数获取文本(val){
设n=/[\n]/;
让我;
让内部=[];
for(设i=0;i
.newline::after{
内容:'\\n'
}
您只需将它们替换为反斜杠(\
)和n
字符即可
要在文本中创建\
,请将其自身转义,即\
所以
$('#textarea').val().替换(/\n/g,'\\n')
您只需将它们替换为反斜杠(\
)和n
字符即可
要在文本中创建\
,请将其自身转义,即\
所以
$('#textarea').val().替换(/\n/g,'\\n')
在字符串中添加换行符没有什么错……您使用的是eval()
若要运行此…?显示get_text
函数。模板字符串syntax的参数use backticks`中不应出现错误。您的代码有语法错误。问题不在于字符串参数。字符串中有换行没有错……您是否使用eval()
要运行此…?显示获取文本
函数。Y