Как увеличить скорость функции getElementById () в IE или дать другие решения? - PullRequest
0 голосов
/ 11 ноября 2009

У меня есть проект, использующий Javascript для синтаксического анализа строки json и помещения данных в содержимое div.

В этом случае все переменные itemname имеют одинаковый идентификатор div.

Если переменная i около 900, я запускаю этот код в Firefox 3 для <10 мс </strong>, но он работает на IE 7 для> 9 с , IE обрабатывает этот код медленнее в 100 раз, чем Firefox

Я не знаю, что происходит с IE?

Если я уберу строку document.getElementById (itemname) , их скорость будет одинаковой.

Основная проблема, связанная со мной, - это document.getElementById () функция?

Не могли бы вы показать мне, как решить эту проблему, чтобы увеличить этот код в IE?

Спасибо заранее.

            var i = obj.items.length-2;
            hnxmessageid = obj.items[i+1].v;

            do{
                itemname = obj.items[i].n;
                itemvalue = obj.items[i].v;
                document.getElementByid(itemname);
                i--;
            }while(i>=0);

Ответы [ 3 ]

1 голос
/ 11 ноября 2009

Вы действительно замечаете какие-либо задержки?

gEBI изначально очень, очень быстрый, я не думаю, что вы все равно можете избежать этого из-за того, что вы делаете. Не могли бы вы представить, что именно вы делаете? Похоже, вы используете цикл, но можете ли вы опубликовать именно то, что вы делаете внутри цикла, какова ваша общая цель сценария?

0 голосов
/ 24 февраля 2012

Как минимум кешируйте ссылку на документ:

var doc = document;
for(;;) { 
   doc.getElementById(..);
}
0 голосов
/ 12 ноября 2009

document.getElementByid (itemname) - это самый быстрый способ получить один элемент из DOM в любом реальном приложении, у вас не возникнет проблем с его использованием, если вы обнаружите проблему, вам нужно немного переосмыслить свой код Можно выполнить любую задачу с помощью всего лишь нескольких вызовов этого метода. Если хотите, можете представить вам полную проблему, чтобы я мог показать вам пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...