<?xml version="1.0" encoding="utf-8"?> <response> <action type="create"> <content tag="div" parent="web" id="header"> <ul> <li><a href="index.php">Strona Główna</a></li> </ul> </content> </action> </response>
Jest to kod generowany przez serwer, który jest pobierany obiektem xmlHttpRequest, i w zależności od znacznika <action> są podejmowane różne decyzje. W tym przypadku zostanie stworzony element <div> o id "header", zostanie podpięty do elementu z id "web". I teraz jest problem: chciałbym elementowi "header" nadać innerHTML taki, jaki tekst między znacznikami <content>, dopóki nie ma tam żadnych znaczników to tekst jest cały, jednak nie wiem jak dodać znaczniki, dlatego proszę o pomoc.
Teraz to już w ogóle zgłupiałem...
... function handleResponse() { xmlResponse = xmlHttp.responseXML; xmlRoot = xmlResponse.documentElement; var actionArray = xmlRoot.getElementsByTagName('action'); for (var i = 0; i < actionArray.length; i++) { doActionResponse(actionArray.item(i)); } } function doActionResponse(action) { var content, child, parent; switch (action.getAttribute('type')) { case 'create': contentArray = action.childNodes; for (j = 0; j < contentArray.length; j++) { content = contentArray[j]; child = document.createElement(content.getAttribute('tag')); child.id = content.getAttribute('id'); if (content.firstChild.nodeType == 1) //child.appendChild(content.firstChild); else child.innerHTML = content.firstChild.data; parent = $(content.getAttribute('parent')); parent.appendChild(child); } break; ...
Linia opatrzona komentarzem - child.appendChild(content.firstChild); - wywala błąd odczytu odpowiedzi w Internecie Explorerze i Safari, a w Firefoxie i Operze węzeł content.firstChild jest wstawiany, tyle że, dziwnie się zachowuje... Cały tekst jest w 1 linii, nawet jak jest więcej elementów <li>, linki nie są "do kliknięcia" itp. Czy ktoś podpowie, co jest źle?