Как уже упоминалось, (в настоящее время) рейтинг с наибольшим рейтингом не учитывает возможность встраивания ввода внутри метки.
Поскольку никто не опубликовал ответ без JQuery, вот мой:
var labels = form.getElementsByTagName ('label');
var input_label = {};
for (var i = 0 ; i != labels.length ; i++)
{
var label = labels[i];
var input = label.htmlFor
? document.getElementById(label.htmlFor)
: label.getElementsByTagName('input')[0];
input_label[input.outerHTML] =
(label.innerText || label.textContent); // innerText for IE8-
}
В этом примере для простоты таблица поиска непосредственно индексируется входными элементами HTML. Это вряд ли эффективно, и вы можете адаптировать его так, как вам нравится.
Вы можете использовать форму в качестве базового элемента или весь документ, если хотите получить метки для нескольких форм одновременно.
Не выполняется проверка на неправильный HTML (множественные или отсутствующие входы внутри меток, отсутствующий ввод с соответствующим идентификатором htmlFor и т. Д.), Но вы можете добавить их.
Возможно, вы захотите обрезать тексты меток, так как концевые пробелы часто присутствуют, когда ввод встроен в метку.