这里有很多这样的问题,但没有一个能够解决我的问题。我正在尝试在java应用程序的SWT浏览器中实现“查看更多”和“少看”之间的简单切换。我是使用此代码进行一些更改 http://jsfiddle.net/8u2jF/
我的代码就像
<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"
}
}
但是当我运行它时\ n不被视为新行字符?我如何让Javascript理解它是换行符?
我将在java SWT应用程序中使用此脚本并使用SWT Browser调用它。我将传递一个字符串作为参数,该参数可能包含任何转义字符。我该如何处理它们?
答案 0 :(得分:0)
在HTML中,没有\t
,\n
,\r
这样的元素。使用<br/>
代表换行,
代表\t
(或更好的css margin-right
)。
function addText(text) {
$('span').append("<br/>First line goes here <br/> Second line goes here");
}
function replaceText(text) {
$('span').append(
text.replace("\\n", '<br/>')
);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div onClick="replaceText('<br/>First Line\\nSecond Line')">Click to add and replace</div>
<div onClick="addText('<br/>First line goes here <br/> Second line goes here')">Click to see magic</div>
<span></span>
&#13;
答案 1 :(得分:0)
如果您使用
toggleText(encodeURI('hsd\nhe'));
(使用新行\ n)
而不是
toggleText(encodeURI('hsd\\nhe'));
(第一个\防止第二个被解释)
结果将是
<p id="textArea">hsd
he</p>
因此,源代码中有一个新行,但这在html呈现中不可见 如果您想在渲染中添加新行,则需要添加html标记