2013-02-21 5 views
2

В документе HTML у меня есть форма, и из формы есть несколько элементов ввода (а не номер исправления). Я хочу получить последний элемент ввода.Доступ к последнему элементу ввода формы

Я пробовал:

imputs=document.getElementsByTagName('input'); 
lastIndex=imputs.length; 
imputs[lastIndex] - here I get undefined 

Я не понимаю, почему следующий код работает и предыдущий: не

lastIndex=10; 
imputs[lastIndex] 

ответ

4
imputs = document.getElementsByTagName('input'); 
lastIndex = imputs.length; 
imputs[lastIndex - 1] 

Массивы ([. Обн] и NodeList и т.д. .) основаны на JavaScript.

также: i * n * ставит. ;)


Альтернативный метод будет document.querySelector('...') с ":last-of-type":

document.querySelector('input:last-of-type').value = '42'; 

http://jsfiddle.net/zUVg5/

+3

Индексы массива * основаны на 0, но возврат 'getElementsByTagName()' не является массивом, это 'NodeList'; все еще 0-индексированный, но не имеет всех методов, которые делают массивы. –

1

Массивы на основе нуль. Длина даст вам элемент, который не определен, поскольку он находится после конца массива. Вы должны использовать

imputs[lastIndex - 1] 
2

getElementsByTagName() функция возвращает NodeList, содержащий все элементы, которые имеют определенное имя тега. Доступ к этим элементам можно получить с помощью обозначения квадратной скобки, указав индекс.

Однако элементы в списке индексируются от 0 до N, где N меньше, чем длина списка. Чтобы получить последний элемент, вы действительно хотите imputs[imputs.length - 1];.

Смежные вопросы