Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обработка DOM после Ajax-запроса (https://javascript.ru/forum/misc/14210-obrabotka-dom-posle-ajax-zaprosa.html)

Игорь87 05.01.2011 18:27

Обработка DOM после Ajax-запроса
 
Здравствуйте!Возникла проблема с ajax ...
Ну вот делаю запрос на сервер , "возвращается" html форма , и перед тем как ее вставить в документ с помощью метода innerHTML объекта dom, мне эту форму(она состоит из елементов формы select и submit ) нужно обработать функцией (функция удаляет submit и вешает на select событие onChange и т.д.).Можно ли как-нибудь обработать функцией полученный html код до вставки его в документ?
Можно, конечно, обработать данные, полученные с сервера, и после вставки в документ,но тогда возникает "моргание" удаляемого submit ...Т.е. submit сначало есть,а только через некоторое время кнопка исчезает.На самом деле очень часто возникает такая поблема с обработкой полученного dom.

Еще можно было передать get/post параметр в ajax запросе, чтобы уже на сервере удалить эту кнопку, и вернуть форму без submit, но в этом и весь смысл - чтобы сайт работал как с включенным js , так и без него, при этом максимально снять нагрузку с сервера и сбросить работу на пользовательскую машину ...
Не утруждайте себя глупыми вопросами: "А зачем тебе это?", или что-то подобное.

Спасибо всем у кого есть идеи как можно решить эту проблему...

dmitriymar 05.01.2011 19:17

Цитата:

Сообщение от Игорь87
чтобы сайт работал как с включенным js , так и без него

Цитата:

Сообщение от Игорь87
вставить в документ с помощью метода innerHTML

innerHTML метод скрипта-так что с выключенной поддержкой -никак

Aetae 05.01.2011 19:23

div=document.createElement('div');
div.innerHTML=ajax.responseText;
//обработка
targetElement.appendChild(div);


Ну и если лишний див не нужен:
function stringToDOM(str)
{
var d=document.cerateElement('div'),f=document.createDocumentFragment();
d.innerHTML=str;
while(d.firstChild)f.appendChild(d.firstChild);
return f
}
res=stringToDOM(ajax.responseText);
//обработка
targetElement.appendChild(res);


Часовой пояс GMT +3, время: 09:00.