На этот вопрос нет однозначного правильного ответа. Все зависит от того, с чем вам придется работать. Если вы работаете со страницей, имеющей огромное количество элементов в дереве DOM, лучше кэшировать ссылки и использовать их повторно, чтобы ускорить поиск. Если вы работаете на маленькой странице, лучше искать элементы на лету и минимизировать потребление памяти браузером.
Это также зависит от браузеров, на которые вы ориентируетесь. Например, более новым версиям Firefox требуется время для точной очистки элемента в первый раз, но они кэшируют ссылку внутри, поэтому в следующий раз, когда вы собираетесь ее искать, это будет почти мгновенно. IE, с другой стороны, не кэширует значения поиска, но время поиска намного быстрее, чем Firefox с первой попытки.
Многие современные фреймворки будут кэшировать элементы, которые вы нашли для вас. Однако я лично все еще предпочитаю использовать document.getElementById большую часть времени. Что мне делать, когда мне нужно кэшировать значения поиска, это следующее:
function registerElement(id)
{
if (!this["get_" + id])
this["get_" + id] = function() {
var element = document.getElementById(id);
this["get_" + id] = function() {return element;};
return element;
}
}
Вы используете это, вызывая registerElement и передавая ему идентификатор элемента. Когда вам нужно получить значение, вы вызываете переданный вами get_element id, и при первом запуске он ищет элемент и кэширует его, при каждом последующем вызове он просто возвращает кэшированное значение.