На моей странице есть div, в котором мне нужно отображать html из javascript. Поэтому в javascript я добавляю теги CDATA, чтобы html отображался как данные. Ниже приведен код, который я использовал.

var htmlCode = '<h>testing html</h>';
htmlCode = '<![CDATA[' + htmlCode+ ']]>';
$('myDiv').html(htmlCode);

Фактически это отображает testing html]]>, поскольку последний > конвертируется в &gt;, когда я назначаю его HTML-элементу div. Есть идеи, как решить эту проблему

Заранее спасибо

0
Ankit 8 Янв 2013 в 19:38
Да, теперь в чем вопрос? last '>' преобразуется в> when ... Итак?
 – 
Sathyesh
8 Янв 2013 в 19:40
1
@SathyeshSelvarajah: Вопрос был неправильно отформатирован.
 – 
Rocket Hazmat
8 Янв 2013 в 19:57
1
Люди просто публикуют вопрос, даже не проверяя, как он отображается. В любом случае, спасибо за редактирование @RocketHazmat!
 – 
Sathyesh
19 Янв 2013 в 07:14

1 ответ

Лучший ответ

CDATA используется в файлах XML. это означает, что содержимое внутри обрабатывается как текст. .html() jQuery превращает <![CDATA[<h в <!--[CDATA[<h-->, который является комментарием. Затем он игнорирует закрывающий тег </h>, поскольку открывающий тег отсутствует. Итак, он отображает testing html]]>.

Если вы хотите отображать HTML как текст, просто используйте .text() вместо .html(). Он ускользнет от вас, чтобы браузер не проанализировал его.

var htmlCode = '<h>testing html</h>';
$('#myDiv').text(htmlCode);

РЕДАКТИРОВАТЬ : вы сказали, что хотите, чтобы HTML был проанализирован, а затем просто используйте .html.

var htmlCode = '<h>testing html</h>';
$('#myDiv').text(htmlCode);

В любом случае CDATA не требуется.

3
Rocket Hazmat 8 Янв 2013 в 20:25
В div я хочу показать html, а не текст html. Он должен показывать «тестирование html», а не « тестирование html
 – 
Ankit
8 Янв 2013 в 20:22
@Ankit: Тогда просто сделай .html(htmlCode). Вам не нужен CDATA, не знаю, зачем он вам нужен.
 – 
Rocket Hazmat
8 Янв 2013 в 20:24
@Hazmat: htmlCode может быть плохо отформатирован html, поэтому мне нужно поместить его как CDATA
 – 
Ankit
11 Янв 2013 в 12:28
@Ankit: CDATA работает только с самим (X) HTML-файлом, а не после того, как файл был проанализирован в DOM.
 – 
Rocket Hazmat
11 Янв 2013 в 18:23
@Hazmat: используется CDATA, поскольку HTML может быть плохо проанализирован. Пользователь вводит html в текстовое поле, и при нажатии кнопки я должен отображать его как html в div.
 – 
Ankit
13 Янв 2013 в 15:15