簡體   English   中英

使用document.getElementsbyName()獲取數組的長度

[英]Get the length of an array using 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。有人可以讓我知道我犯的錯誤。

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

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

元素名稱是TextBx[]TxtBx_是類名稱

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

閱讀getElementsByName()文檔以獲取更多信息

因為沒有元素的名稱為TxtBx_ 實際上是TextBx[]

由於您經常使用jQuery,因此可以按如下所示通過類進行查找,

$('.txtbx')

其他幾件事,我想在這里補充。

attr接受一個對象。 因此,您可以一次傳遞所有輸入。 此外,您可以在動態創建input時將屬性作為第二個論點進行傳遞。 另外,根據jQuery文檔,您應該在動態創建input類型時在input類型中指定type ,否則它將無法在某些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);  
}
var numberofElements = document.getElementsByName("TextBx[]").length;

文本框'name','TxtBx_[]''name','TxtBx_[]'通過TxtBx_獲得。

試試吧

$("input.txtbx").length;

只需使用該類即可獲取它們:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM