Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.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函数:使用换行符作为\n而不是实际呈现它们_Javascript_Newline - Fatal编程技术网

Javascript函数:使用换行符作为\n而不是实际呈现它们

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')

我正在开发一个函数,该函数从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