Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Импортировать ноды из responseXML в document, вариации на тему... 
:(
    Опции темы
y3u
Дата 2.10.2006, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 9.9.2006
Где: Москва

Репутация: нет
Всего: 13



что-то я уже битый час бьюсь, не получаиццо сделать простую штуку. 

Пришел ко мне DOM объект, который мне вернул AJAX, содержит он там примерно такие данные 

Код

<nodeList attribute1="a1" ... >
    <childNode>any html code as dom hierarhy</childNode>
    <childNode>any html code as dom hierarhy</childNode>
    etc...
</nodeList>

допустим мне надо в каждую строчку таблицы вставить HTML код из childNode, при чем вариант, что DOM уже будет содержать готовую таблицу отпадает сразу. Допустим, я уже нахожусь в нужно месте метода, где собираюсь добавить из нужного узла DOM объекта содержимое в строку таблички через innerHtml
Код

    var row = ....
    var childNode = ... это Element <childNode>any html code as dom hierarhy</childNode>

Как нужно правильно поступить? Если тупо делаю appendChild(childNode), то валится No such interface supported. Если делать row.innerHtml = childNode; естественно, рисует "[object]".

Это сообщение отредактировал(а) y3u - 2.10.2006, 16:45


--------------------
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах
PM MAIL   Вверх
y3u
Дата 2.10.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 9.9.2006
Где: Москва

Репутация: нет
Всего: 13



пока вышел из положения вот таким образом, но может кто подкажет более правильное решение?
Код


function appendChildsContent(parent, node) {
        var childNodes = node.childNodes;
        for (var i = 0; i < childNodes.length; i++) {
            var childNode = childNodes.item(i);
            if (childNode.nodeType == 3) {
                parent.appendChild(document.createTextNode(childNode.nodeValue + " "));
                continue;
            }
            var element = document.createElement(childNode.nodeName);
            appendChildsContent(element, childNode);
            parent.appendChild(element);
        }
}




--------------------
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах
PM MAIL   Вверх
pythonwin
Дата 2.10.2006, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 1
Всего: 36



y3u
1) пожалуйста, выложи весь код
2) пожалуйста, не используй сленг
3) не понял вопроса 
PM WWW GTalk Jabber   Вверх
skyboy
Дата 2.10.2006, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



приведи код response и код, html код области, куда ты вставляешь данные и "вставляющий" код .
PM MAIL   Вверх
y3u
Дата 2.10.2006, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 9.9.2006
Где: Москва

Репутация: нет
Всего: 13



pythonwin, подправил первый пост, убрал т.н. "сленг"  smile 

люди, не могу я сюда запостить весь код, во-первых он достаточно большой, во вторых - не положено. Не ужели не понятна проблематика? Есть DOM дерево, которое достается из httpRequest.responseXML, в нем узлы либо текстовые либо Element, верхняя часть дерева, скажем на глубину 2-3 уровня - это мои XML теги, все что внутри - это протрансформленное заранее кучей XSL-ников в моем вебприложении содержимое, которое, в итоге, является вполне себе нормальным HTML. Мне теперь надо добавить в строки таблицы к уже существующему контенту это саме HTML содержимое. Поэтому я написал вот такую извратную функцию, которая решает мою проблему. Вопрос состоит в том, можно ли как-то обойтись без этой функции стандартными средствами, т.к. там есть рекурсия, использование которой не желательно.


--------------------
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах
PM MAIL   Вверх
pythonwin
Дата 2.10.2006, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 1
Всего: 36



Цитата(y3u @  2.10.2006,  23:43 Найти цитируемый пост)
pythonwin, подправил первый пост, убрал т.н. "сленг"  smile 

спасибо! smile
PM WWW GTalk Jabber   Вверх
skyboy
Дата 2.10.2006, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



понимаешь, у меня такая схема проблем не вызвала, потому я и спрашиваю весь код smile Кроме того, No such interface supported наводит на мысль, что у тебя как-то не так выбирается row или var childNode. посмотри дебаггером, что в переменных в момент записи?
проверим, правильно ли я понял. тебе приходит в XML-тегах HTML-код, который является строкой таблицы + содержимое строки и тебе надо этот код строки из response вставить в таблицу? 
PM MAIL   Вверх
Sardar
Дата 4.10.2006, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



y3u, ты ошибся только при импорте нод. Нельзя ноды из одного документа appendChild в ноды другого документа. Существует метод импортированная_нода = document.importNode(нода, true);
Вторым параметром указываем что импортируем ноду с дочерними нодами. Полученную ноду/елемент добавляем через appendChild, ошибок быть не должно.

Этот же механизм используеться при переносе нод с одного ифрейма в другой.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0712 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.