Преобразовать строку HTml в DOM, а затем DOM в форматированный текст
Я использовал конвертер RtfToHtml, чтобы напечатать некоторый текст в ячейку таблицы. он успешно конвертируется, тогда я хочу, чтобы этот преобразованный текст (geResult.NotesLong) был отформатирован:
<td>
<script>{ setCommentValue(@colIndex, @rowIndex, @totalColCount, '@geResult.NotesLong', '@geResult.Color');}</script>
</td>
эта функция JavaScript преобразует его в элемент DOM
function setCommentValue(colIndex, rowIndex, assessmentLength, resultValue, color) {
var str2DOMElement = function (html) {
var frame = document.createElement('iframe');
frame.style.display = 'none';
document.body.appendChild(frame);
frame.contentDocument.open();
frame.contentDocument.write(html);
frame.contentDocument.close();
var el = frame.contentDocument.body.firstChild;
document.body.removeChild(frame);
return el;
}
var el = str2DOMElement(resultValue);
//...code to set elementPos...
$(".test").get(elementPos).appendChild(el);
}
который отображается в моей таблице следующим образом
<DIV STYLE="text-align:Left;font-family:Segoe UI;font-style:normal;font-weight:normal;font-size:12;color:#000000;"><P STYLE="margin:0 0 0 0;"><SPAN><SPAN>Lee is an attentive listener who tunes into the task at hand </SPAN></SPAN></P><P /></DIV>
Однако я хочу, чтобы он отображался как (с форматированием, определенным в приведенных выше тегах)
Lee is an attentive listener who tunes into the task at hand
Как мне отформатировать этот текст, чтобы он был отформатирован в соответствии с тегами, а в ячейке таблицы отображается только текст?
2 ответа
Наконец, я нашел способ извлечь простой текст изнутри (но в нем все еще отсутствуют форматы)
HTML-страница
<td>
<script>{ setCommentValue(@colIndex, @rowIndex, @totalColCount, '@geResult.NotesLong', '@geResult.Color');}</script>
</td>
Javascript
function setCommentValue(colIndex, rowIndex, assessmentLength, resultValue, color) {
String.prototype.replaceAll = function (search, replacement) {
var target = this;
return target.split(search).join(replacement);
};
//replace all text special characters
var replaced = resultValue.replaceAll("&", "&").replaceAll(">", ">").replaceAll("<", "<").replaceAll(""", "\"").replaceAll("'", "\'");
var parser = new DOMParser();
var doc = parser.parseFromString(replaced, "text/xml");
....
$(".test").get(elementPos).innerHTML = doc.firstChild.textContent;
}
В моем тексте были специальные символы, такие как> for > и т. Д., Поэтому я заменил их вручную.
Ваш код заканчивается так:
[...]</P><P /></DIV>
Там есть ошибка, это должно быть
[...]</P></P></DIV>
(второе закрытие p
пометить неправильно /
позиция)
ДОПОЛНЕНИЕ: На самом деле, второй закрывающий тег p слишком много - есть только одно открытие p
тег в коде вы разместили - стереть его.