2013-12-25 3 views
0

Привет У меня есть такой массив.Получите длину массива, используя document.getElementsbyName()

var i; 
for(i=0;i<10;i++){ 
    $('<input/>').attr('type','text') 
       .attr('name','TxtBx_[]') 
       .attr('id','TxtBx_' + i) 
       .attr("readonly","readonly") 
       .attr('value',i) 
       .addClass('txtbx') 
       .appendTo($div); 
    }  

И я хорошо печатаю 10 ящиков ввода.

Позже мне нужно получить количество текстовых полей, которые я создал. Поэтому я использую

var myarr=document.getElementsByName('TxtBx_'); 
var numberofElements=myarr.length; 

, но когда я ставлю предупреждение, чтобы проверить значение numberofElements это дает мне всегда 0. Длина массива должна быть 10. Может кто-то пожалуйста, дайте мне знать ошибку я сделал ,

ответ

1

имена элементов являются TextBx[], не TxtBx_.

var myarr=document.getElementsByName('TextBx[]'); 
var numberofElements=myarr.length; 
0

Просто используйте класс, чтобы получить их:

var numberofElements = $('.txtbx').length; 
1

Поскольку ни один элемент не имеет имени TxtBx_. Это TextBx[] на самом деле.

Поскольку вы alrady с помощью JQuery, вы можете найти по классу, как показано ниже,

$('.txtbx') .length

Немногие другие вещи, я хотел бы добавить здесь.

attr также принимает объект. Таким образом, вы можете передавать все входы сразу. Кроме того, вы можете передавать атрибуты в качестве второго аргумента, динамически создавая input. Кроме того, согласно документам jQuery, вы должны указать type в типе input при динамическом их создании или в IE не будет работать.

Так, попробовать что-то вроде этого,

var i; 
for(i=0;i<10;i++) { 
    $('<input type="text"/>',{ 
       'name': 'TxtBx_[]', 
       'id': 'TxtBx_' + i, 
       'readonly':'readonly' 
       'value': i, 
       'class': 'txtbx' 
    }).appendTo($div); 
} 
+0

Извините, что исправило это. Виноват. – t4thilina

2

имена элементов TextBx[] и TxtBx_ это имя класса

var myarr=document.getElementsByName('TextBx[]'); 
var numberofElements=myarr.length; 

Читать getElementsByName() документацию для получения дополнительной информации

1
var numberofElements = document.getElementsByName("TextBx[]").length; 

Название текстового поля является 'name','TxtBx_[]' получение от TxtBx_.

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