не понимаю cloneNode
Получаю xml через responseXML и хочу вставить и отобразить полученный кусок в имеющемся дереве.
Для этого делаю(как учат все учебники) var resp = xhr.responseXML var old = resp.getElementsByTagName('ul')[0]; var noviy = old.cloneNode(true); и вставляю в заданный li(вложенный спискок) document.getElementById('some id').appendChild(noviy) в результате вставлятся мешанина li не в виде списка а именно li следуют один за другим без переноса строки, и в firebug вствленный кусок структурно отображается правильно но блекло. Как корректно вставлять? И можно ли вообще просто получить кусок хмл и вставить иге в нужное место без создания элементов, создания всех их атрибутов и последующей, и только потом вставки? Спасибо. |
С сервера возвращаете обычный html, потом у нужного элемента
document.getElementById('someId').innerHTML = xhr.responseText;
|
Не уверен, но по моему попытка вставить кусок XML в HTML обречена на неудачу.
попробуйте обернуть HTML внутри XML-а в блок CDATA, а потов вставлять с помощью innerHTML не уверен, что поможет, но попробовать стоит |
У меня аналогичная проблема. Аяксом получаю с сервера XML, в котором есть как бы HTML-разметка, которую нужно перенести на страницу. Например:
<answer> Ответ на вопрос смотрите <a href="">тут<a> </answer> Делаю cloneNode(true), все вставляется, но ссылки не работают, хотя в исходном коде они есть. Возможно, есть какое-то решение проблемы? |
Цитата:
Цитата:
|
Такое решение мне не подходит, поскольку xml строится с помощью xslt, а xsl:copy-of невозможно обернуть в cdata. Поэтому и спрашиваю, нет ли какого-то альтернативного варианта.
|
Цитата:
<!DOCTYPE html>
<body>
<div></div>
<script>
var text = '<root><a href="//google.com">Google</a></root>';
if (typeof DOMParser !== 'undefined') {
parser = new DOMParser();
xmlDoc = parser.parseFromString(text, "application/xml");
} else {
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(text);
}
var xmlNode = xmlDoc.documentElement.firstChild,
htmlNode = document.body.children[0];
try {
htmlNode.appendChild(xmlNode.cloneNode(true));
} catch (e) {
alert(e.message);
}
</script>
</body>
Цитата:
Или проходить в цикле по ним и создавать и вставлять соответствующие им html-элементы. |
danik.js, спасибо за ответ. Решила-таки попробовать переписать все с использованием JSON вместо XML.
|
в ие xml и html - это два непересекающихся мира, так что по любому требуется промежуточная сериализация.
я беру xml накладываю xslt который преобразует xml в html с дополнительными преобразованиями и вставляю в документ |
Цитата:
воспользуйся например такой либой для xml: https://github.com/nin-jin/jin/blob/...v%3Dweb.jam.js при этом у тебя будут удобные селекты по xpath запросам, возможность преобразования в html без говнокода на js ну и в целом более практичный и расширяемый формат данных. |
| Часовой пояс GMT +3, время: 07:36. |