Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.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中传递带有转义字符的字符串?_Javascript_Escaping - Fatal编程技术网

如何在javascript中传递带有转义字符的字符串?

如何在javascript中传递带有转义字符的字符串?,javascript,escaping,Javascript,Escaping,这里有很多这样的问题,但没有一个能够解决我的问题。我正在尝试在java应用程序中的SWT浏览器中实现“查看更多”和“查看更少”之间的简单切换开关。我在使用此代码时做了一些更改 我的代码应该是 <div> <p id="textArea"><!-- This is where I want to additional text--></p> </div> <a id="toggleButton" onclick="to

这里有很多这样的问题,但没有一个能够解决我的问题。我正在尝试在java应用程序中的SWT浏览器中实现“查看更多”和“查看更少”之间的简单切换开关。我在使用此代码时做了一些更改

我的代码应该是

<div>
    <p id="textArea"><!-- This is where I want to additional text--></p>
</div>


<a id="toggleButton" onclick="toggleText(encodeURI('hsd\\nhe'));" href="javascript:void(0);">See More</a>

var status = "less";

function toggleText(s)
{
    var text="Here is some text that I want added to the HTML file";

    if (status == "less") {
        document.getElementById("textArea").innerHTML=decodeURI(s);
        document.getElementById("toggleButton").innerText = "See Less";
        status = "more";
    } else if (status == "more") {
        document.getElementById("textArea").innerHTML = "";
        document.getElementById("toggleButton").innerText = "See More";
        status = "less"
    }
}

var status=“less”; 函数切换文本 { var text=“这里有一些我想添加到HTML文件中的文本”; 如果(状态=“更少”){ document.getElementById(“textArea”).innerHTML=decodeURI; document.getElementById(“toggleButton”).innerText=“查看较少”; status=“更多”; }否则如果(状态=“更多”){ document.getElementById(“textArea”).innerHTML=“”; document.getElementById(“toggleButton”).innerText=“查看更多”; status=“less” } }
但当我运行此命令时,\n不会被视为新行字符?如何让Javascript理解它是新行字符


我将在java SWT应用程序中使用此脚本,并使用SWT浏览器调用它。我将传递一个字符串作为参数,该参数可能包含任何转义字符。如何处理它们?

在HTML中没有
\t
\n
\r
等元素。使用

换行,使用
换行
\t
(或更好的css
右边距
)。
函数addText(text){
$('span').append(“
第一行在这里
第二行在这里”); } 函数替换文本(文本){ $('span')。追加( text.replace(“\\n”和“
”) ); }

单击以添加和替换
点击看魔术
如果您使用

toggleText(encodeURI('hsd\nhe'));
(使用新行\n)

而不是

toggleText(encodeURI('hsd\\nhe'));
(第一个\阻止解释第二个)

结果将是

<p id="textArea">hsd
he</p>

hsd 他

因此,在源代码中有一个新行,但在html呈现中不可见
如果要在渲染中添加新行,则需要添加html标记,将
\n
更改为

,但是\t和\r呢?实际上,我必须传递一个包含转义字符的字符串。我在java应用程序中使用它,我将使用浏览器函数调用此脚本,并传递一个字符串作为参数。该字符串将包含此类转义字符。然后,我如何处理它?我正在java应用程序中使用它,我将使用浏览器函数调用此脚本,并将字符串作为参数传递。该字符串将具有此类转义字符。那么,我如何处理它?@user3425344我更新了answer的示例
\r
\t
将被浏览器忽略。如果我使用onclick=“toggleText(encodeURI('hsd\nhe'));”。我得到的结果是hsd nhe,我只是在fiddle上尝试了一下。是的,正如我所说的,新行在源代码中,但在呈现中看不到它,因为可以添加空格或新行,这对html呈现并不重要。您可以尝试使用
切换文本(encodeURI('hsd\n\n\n\n\nhe')
相同的呈现(html),但如果检查源代码,您可以看到:

hsd he

,而不是

hsd he

,如果要在html呈现中添加一行,您可以:-在每行之间添加

,或者-将每行封装在html标记中:
第一行第二行