2014-12-17 3 views
0

Как получить номер элемента по id с помощью javascript?Как получить номер элемента ref от id с помощью javascript?

http://jsfiddle.net/3AaAx/51/

нормально, после того, как страница загрузки, это предупредит 2 (длина элемента ID ele1).

Но почему тревога undefined

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
<input type="text" id="ele1" class="test" value="test"> 
<input type="text" id="ele1" class="test" value="test">  
<script> 
$(function() { 
//var xxx = document.getElementsByClassName('test'); 
var xxx = document.getElementById('ele1');  
var xxx; 
alert(xxx.length); 
}); 
</script> 
+1

Что вы подразумеваете под ref? Кроме того, если вы получаете доступ к элементу по id, длина будет всегда равна 1. Вы должны использовать классы. –

+2

'var xxx = $ ('# ele1');' – arao6

+2

'document.getElementById ('ele1')' не возвращает массив, поэтому длина свойства будет не определена – Dom

ответ

4

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

Вы, вероятно, относятся к getElementsBy...() (обратите внимание на s!) или querySelectorAll(), которые возвращают NodeList, который имеет length.

+0

Добавляя к этому, 'getElementsBy ..()' не будет работать с идентификаторами, но классами или типами элементов. –

0

Это, как вы получите количество элементов, возвращаемых getElementById:

var xxx = (document.getElementById('ele1') === null) ? 0 : 1; 

getElementById возвращает null, если ни один элемент не соответствовал id. Если функция не возвращает null, то один и только один элемент соответствует критериям. Подробнее here.

0

Линии вы комментировали от прав:

//var xxx = document.getElementsByClassName('test'); 

getElementsByClassName возвращает коллекцию элементов DOM, который делает имеет length свойство. Примечание в этом методе Элементы: множественное число. length указывает количество элементов в коллекции.

Однако вы не понимаете getElementById. Этот метод возвращает только элемент DOM (или null, если такой элемент отсутствует). Примечание в этом методе Элемент is исключительный вид. Элемент DOM обычно не имеет свойства length.

Другая проблема в вашем коде, ID должна быть уникальной внутри страницы. Если у вас есть два или более элемента с одинаковым идентификатором, это незаконная разметка. В таком случае вы получите неожиданный результат.