Относительно сообщения Гамбо:
Хотя prototype и jQuery полезны, некоторые люди не внедряют их в свои проекты.
Может ли кто-нибудь объяснить, почему решение Гамбо было понижено, кроме того факта, что он повторил то, чего первоначально пытался избежать ОП?
node = document.getElementById(this.id);
while (node.nodeName != "FORM" && node.parentNode) {
node = node.parentNode;
}
Чтобы ответить на вопрос ОП:
Обход DOM является самым быстрым способом достижения этого эффекта - воспринимаемая скорость достигается за счет 1) лучшего написанного кода JS или 2) времени выполнения (если вы сохраните форму при загрузке страницы для этого элемента, вы все равно будете проходить, но у вас будет более быстрый вызов сохраненной переменной, когда вам понадобится получить эту информацию).
Нет атрибутов, вложенных в неформальные элементы, которые бы связывали его с формой (span.form не существует).
Если вы используете скрипт (php / perl) для генерации своей страницы и собираетесь делать много обращений к форме, вы можете встроить идентификатор формы в HTML для этого элемента. Тем не менее, поиск должен был бы произойти.
Надеюсь, это поможет,
vol7ron