Инструменты и методы кэширования Javascript

У меня есть требование, где я хочу пройти через все элементы управления DropDown (выбрать) на странице. Я выбираю все элементы управления DropDown, используя:

var DropDowns = document.getElementByTagName('select');

Я перебираю эти DropDowns для программной установки нескольких элементов управления:

for (i=0; i<= DropDowns.Length; i++)
{
    var CurrentControl = DropDowns[i];
    CurrentControl.options[CurrentControl.selectedIndex].value = 1;
}

Есть ли какой-либо фреймворк Javascript, который поддерживает кэширование? Я хочу кэшировать все имена элементов управления DropDown и циклически проходить через кэшированные имена вместо прямой циклической обработки объекта Document.

Есть ли какие-то хитрости для увеличения производительности цикла?

4 ответа

Решение

Я не думаю, что вы увидите огромные улучшения в производительности для цикла, который повторяет только 30-40 элементов, но некоторые браузеры получат огромный прирост скорости от циклического перемещения по массиву вместо NodeList или же HTMLCollection как это называется в некоторых браузерах, которые реализуют DOM уровня 1.

Итак, чтобы ответить на ваш вопрос, вы можете "кэшировать" объекты и т. Д. В массиве, и это должно ускорить этот цикл для будущих итераций.

Имейте в виду, что вам нужно поддерживать этот массив в актуальном состоянии, потому что он не "живой", как DOM.

Я думаю, вы уже делаете это гораздо эффективнее, чем описывают некоторые ответы. Имейте в виду, что вы не зацикливаетесь на документе, вы зацикливаетесь на кэше NodeList из DropDowns, Если вы хотите изменить каждый из этих элементов, то вам неизбежно потребуется пройтись по ним, чтобы изменить их по отдельности.

В jquery это будет выглядеть примерно так:

var $menus = $('select');
$.each($menus, function(index, menu) {
    // Do whatever you want to the menu here
};

Я предлагаю другой подход - сохраните параметры в скрытом поле со значениями, разделенными запятыми, и при загрузке страницы установите значения элемента управления, анализируя разделенные значения.

Другие вопросы по тегам