Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   аналог innerHTML (https://javascript.ru/forum/offtopic/4786-analog-innerhtml.html)

Kolyaj 28.05.2010 14:54

Цитата:

Сообщение от mycoding
как лучше генерировать диалоговые окна

Через innerHTML. Среди каши из createElement потом не разберёшься. Проходили.

B~Vladi 28.05.2010 14:56

Есть другой вариант. В памяти лежит шаблон HTML - кода. Так же есть ссылки на необходимые элементы, которые нужно "подправить" при создании нового экземпляра шаблона. Таким образом, при создании экземпляра, клонируем нужный шаблон, правим (если надо) и добавляем в DOM одним разом - с помощью documentFragment, если добавляется всё в 1 место. Не уверен, что будет быстрее innerHTML, но удобнее - это факт. Так же не придётся создавать каждый элемент шаблона через createElement.

e1f 28.05.2010 15:01

Цитата:

Сообщение от mycoding (Сообщение 56854)
Хотел спросить, а как генерируются диалоги и другие виджеты в JQuery?
Через innerHTML или через createElements ?

Прочитал вот эту статью http://javascript.ru/optimize/javascript-performance
Т.е. обращение через createElements очень медленное будет по сравнению с innerHTML.

Например попробуем сделать диалоговое окно. Там надо как минимум раз 5 сделать элемент через createElements.
А в innerHTML всего один раз обратится к DOM и всё.
Ведь обращение к DOM очень медленное.
Подскажите, пожалуйста как лучше генерировать диалоговые окна, через какой метод и как это сделано в framework-ах?

mycoding, ну епсель-дропсель, неужели сложно открыть исходник? Пора уже сервис делать Let me read the source for you...

try {
    for ( var i = 0, l = this.length; i < l; i++ ) {
        // Remove element nodes and prevent memory leaks
        if ( this[i].nodeType === 1 ) {
            jQuery.cleanData( this[i].getElementsByTagName("*") );
            this[i].innerHTML = value;
        }
    }

// If using innerHTML throws an exception, use the fallback method
} catch(e) {
    this.empty().append( value );
}


UPD Kolyaj, innerHTML может иногда подвести в ИЕ, при невалидном html.

Kolyaj 28.05.2010 15:13

Цитата:

Сообщение от e1f
innerHTML может иногда подвести в ИЕ, при невалидном html.

Примеры? Иногда может подвести всё, что угодно, в любом браузере. И что имеется в виду под невалидным HTML?

e1f 28.05.2010 15:25

Kolyaj, хм, а тема-то старовата, я и не заметил :)
Пример тот, что у ТС'а :)

Kolyaj 28.05.2010 15:33

Цитата:

Сообщение от e1f
Пример тот, что у ТС'а

У ТС'а нет никаких примеров :)

e1f 28.05.2010 15:39

У ТС'а была проблема, которая и является примером "подвести в ИЕ" :)

UPD Тю, с чего это я решил, что Increazon -- ТС. Туплю, видимо :)

B~Vladi 28.05.2010 15:41

Цитата:

Сообщение от Kolyaj
У ТС'а

Можно просто Влад:)

Kolyaj 28.05.2010 15:44

ТС, B~Vladi то бишь, про IE вообще не упоминает. Может ты имеешь в виду
Цитата:

Сообщение от Increazon
Ты не видишь причин, а я охуевший сижу! Нужно менять текста в ячейке таблицы на джаваскрипт, в ИЕ7 пишет "Операция прервана. Не могу отобразить страницу." Так что поверь причины есть

Так неизвестно, что там Increazon наворотил. Если это то, о чём я думаю, то проблема не в innerHTML.

e1f 28.05.2010 15:54

Kolyaj, да, я это и имел в виду :) И Вы правы -- тут innerHTML вроде не виноват -- скорее всего это вставка элементов JS-ом до load страницы.


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