如何在javascript中传递带有转义字符的字符串?
这里有很多这样的问题,但没有一个能够解决我的问题。我正在尝试在java应用程序中的SWT浏览器中实现“查看更多”和“查看更少”之间的简单切换开关。我在使用此代码时做了一些更改 我的代码应该是如何在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
<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标记中:第一行第二行