Доступ к HTMLCollection
(возвращаемому функциями getElement[s]By*
) медленный по сравнению с доступом к массивам, поскольку HTMLCollection
должен соответствовать документу всегда (это live ).
По этой причине лучше создать массив из HTMLCollection
и выполнить итерацию по нему.
Это немного более оптимизировано для скорости:
var attrToFind = "something;something1",
elems = document.all ? document.all : document.getElementByTagName('*'),
i, attr;
// Works in Firefox; not sure about other browsers and engines.
elems = Array.prototype.slice.call(elems);
i = elems.length;
while(i --> 0) {
attr = elems[i].getAttribute('a1');
// Are you sure you want indexOf?
// att === attrToFind may be faster, as it requires one less comparison.
if(typeof att !== 'string' || att.indexOf(attrToFind) < 0) {
continue;
}
// Do stuff.
}