【发布时间】:2014-06-29 21:32:44
【问题描述】:
我对来自 Delphi 的 HTML、js 比较陌生。我已经查看了以下答案,但它们似乎对我不起作用,或者我不明白他们在说什么:
Multi line print
.innerHTML <br> breaking
html <br> and innerHTML problem
问题:我的所有文本都打印在一行中,而不是换行。
以下是 HTML 源代码。
<!DOCTYPE HTML>
<html>
<head>
<title>Test Module</title>
</head>
<body >
<p id="demo"></p>
<button id="btnRPCTest" onclick="RPCTest()">Test RPC call</button>
<p id="RPCTarget">(RPC output here...)</p>
<script id="broker" src="scripts/rpcbroker.js" type="text/javascript"></script>
<script>
function RPCTest() {
var Div = document.getElementById("RPCTarget")
Broker_CallV("XUS INTRO MSG", []);
var text = Broker_ResultsDelim("<br />\n");
Div.innerHTML = text;
}
</script>
</body>
</html>
在上面,代码对服务器进行远程过程调用 (RPC),并将结果放入我创建的自定义 TStringList 对象中,其核心是字符串数组。
下面是返回结果为字符串的代码,由指定的参数 ADelim 分隔。
function Broker_ResultsDelim(ADelim) {
return TStringList.GetTextDelim(RPCBrokerV.Results, ADelim);
}
下面,字符串数组应该连接成一个长字符串,包含换行符。
GetTextDelim: function (Self, ADelim) {
return (Self.FData).join(ADelim) + ADelim;
},
当我运行此代码并使用 Chrome 开发者控制台单步执行时,我可以在控制台中键入“文本”,并且换行符是正确的。
> text
"
...............................................................
.................#.............................................
...###############.......##############..........########......
.################......################........####...####.....
.##.....####..........##....####.....###......##.......####....
.###....###...##............###......##......##................
..##....#######.............###.....###.....###................
.......###..##.............##########.......###....#########...
.......###.................###...............##........###.....
.......###.................###...............###......####.....
......###.................###.................####....###......
...###########........############.............##########......
......................................................###......
................................................########.......
...............................................................
<br />
"
但是在文本被插入到 div 之后,它都在一行上。我不能在这里证明这一点,因为当我复制文本(在屏幕上显示为全是一行)并将其粘贴到 StackOverflow 上的这个问题中时,突然格式正确,带有换行符。
这让我觉得文本确实包含换行 BR 代码,但它们在 div 中被忽略了。
我认为这对于熟悉 HTML 的人来说应该是一个简单的问题,但它让我在困惑中摸不着头脑。提前感谢您的帮助。
凯文
【问题讨论】:
-
您显然在使用脚本语言(我猜是客户端 Javascript?)。请在问题中添加适当的语言标签。另外,请提供一个有效的jsfiddle.net 来演示该问题。
-
我认为我无法在 jsfiddle 上演示这一点,因为它连接到我无法公开的私有后端服务器。
-
我在问题中添加了 javascript 标签。这样更合适吗?
-
@Hardy,我像这样更改了上面的代码行:Div.innerHTML = "
" + text + "
",现在它看起来格式正确。谢谢!我看到是为了保留格式。我明白为什么会这样。但我不明白为什么 /BR\ 标签之前被忽略了。
标签: javascript html innerhtml