Логин:

Пароль:

Форумы
Общие вопросы
Document Object Model
Обсуждаем конференцию
Web Usability (test)

Document Object Model

innerHTML Versus DOM

> Тест, кажется, некорректный. На один вызов innerHTML и тебя два DOMовых, естественно, результаты нивелируются. Кроме того, создание пустых дивов - это не совсем интересно, и никому не нужно. Следующее:
>
> <form><textarea id=report rows=30 cols=80></textarea></form>
> <button onclick=runTest(testHTML,'innerHTML')>html</button>
> <button onclick=runTest(testDOM,'DOM')>DOM</button>
>
> <script>
> var cntEls=1000;
>
> function runTest(func,desc){
> .var div=document.createElement("DIV");document.body.appendChild(div);
> .var d1=new Date();func(div);var d2=new Date();
> .document.forms[0].report.value+="\n"+desc+"="+(d2-d1);}
>
> function testHTML(div){
> .for(var a=[],i=0;i<cntEls;i++) a[i]="<span id=XX"+i+">"+i+"</span>";
> .div.innerHTML=a.join("");}
>
> function testDOM(div){
> .for(var i=0;i<cntEls;i++){
> ..var span=document.createElement("SPAN");
> ..span.id="YY"+i;
> ..span.appendChild(document.createTextNode(i));
> ..div.appendChild(span);}}
> </script>
>
> показывает принципиально другие результаты.
>
> Насчет компиляции скрипта во что-то там супер-эффективное - сказки, имхо. Любой вызов ядра требует хотя бы резолюции переменных, причем динамической. Откуда собственно "умный компилятор" знает, что я не назвал свою переменную "document", а свою функцию "appendChild"?
СообщениеАвторДата
Иван04.07.2002 14:40
гоша04.07.2002 23:27
Maniac05.07.2002 10:17
Gilmour05.07.2002 21:26
Shadowkin16.09.2002 14:18
гоша05.07.2002 16:29
Maniac05.07.2002 17:45
гоша05.07.2002 18:39
Гость12.09.2002 20:19
Maniac08.07.2002 09:50
Leechy05.07.2002 19:20
гоша08.07.2002 12:30
Leechy05.07.2002 00:04
Leechy04.07.2002 15:15
Maniac04.07.2002 14:55
Иван04.07.2002 15:10