我試圖使用pre html標記來包含一些代碼,我將格式化。我從預先存在的預標籤中獲取代碼,並創建一個包含代碼的表格,然後將其格式化。但是每隔一段時間我創建一個td元素,並在其中包含一些文本,則會創建一個空表。我的代碼如下:Javascript CreateElement創建空表
function init() {
var pres = document.getElementsByTagName('pre');
for (var i = 0; i < pres.length; i++) {
var elem = pres[i];
var ourTable = document.createElement('table');
if (elem.className.toLowerCase() == 'code') {
var lineCount = 1;
var linesOfText = elem.innerHTML.split(/\r|\n/);
for (var j = 0; j < linesOfText.length; j++) {
var ourRow = document.createElement('tr');
var lineNumberTd = document.createElement('td');
var lineNumberNode = document.createTextNode(lineCount);
lineNumberTd.appendChild(lineNumberNode);
ourRow.appendChild(lineNumberTd);
var code = linesOfText[j];
var codeTd = document.createElement('td');
var ourPre = document.createElement('pre');
ourPre.innerHTML = code;
codeTd.appendChild(ourPre);
ourRow.appendChild(codeTd);
lineCount++;
ourTable.appendChild(ourRow);
}
}
elem.parentNode.replaceChild(ourTable, elem);
}
}
window.onload = init;
而我的HTML是如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<link rel="stylesheet" href="DefaultStyle.css" />
<title>Autoformatter</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<pre class="code">
while (!stop)
{
while (packetQueue.Count > 0)
{
HandlePacket(packetQueue.Dequeue());
}
}
</pre>
</div>
</form>
<script type="text/javascript" src="PrimaryScript.js" ></script>
</body>
</html>
,這產生這樣的:
有喜歡的一個空表在第4,第6和第8行的第2行。
這裏是你的代碼[jsfiddle](http://jsfiddle.net/NYJ4Q/1/)。 – Simon 2013-03-12 09:29:09
對我來說,它就像你期待的那樣。 – 2013-03-12 09:31:09
@Simon - 哦,謝謝,那真是太酷了。 – Loyalar 2013-03-12 09:31:11