使用document.getElementsbyName()获取数组的长度

时间:2013-12-25 10:08:10

标签: javascript

嗨,我有一个像这样的数组。

 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.有人可以让我知道我犯的错误。

6 个答案:

答案 0 :(得分:2)

元素的名称为TextBx[],而不是TxtBx_

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

答案 1 :(得分:2)

元素名称为TextBx[]TxtBx_为类名

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

阅读getElementsByName()文档以获取更多信息

答案 2 :(得分:1)

因为没有元素名称为TxtBx_。它实际上是TextBx[]

由于你使用jQuery,你可以按照下面的类找到

$('.txtbx')。长度

很少有其他事情,我想在这里补充一下。

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);  
}

答案 3 :(得分:1)

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

文字框的名称为'name','TxtBx_[]' TxtBx_

答案 4 :(得分:0)

试试吧

$("input.txtbx").length;

答案 5 :(得分:0)

只需使用该类来获取它们:

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