2017-06-20 84 views
1

我需要的值爲text box,因爲我使用的是document.getElementsByName("elemntName")但問題是name本身是動態的,如下所示。如何從文本框中獲取動態名稱的值

for(temp = 0 ; temp < arracid.length ; temp++){ 
    cell1=mynewrow.insertCell(4); 
    cell1.innerHTML="<input type='hidden' name='ACID"+index+"' class='tblrows' id='ACID"+index+"' value='"+arracid[temp]+"'>"; 
    index++; 
} 

當我試圖var acidCount = document.getElementsByName('ACID')它不工作,我嘗試

var acidCount = document.getElementsByName('ACID"+index+"')仍然沒有工作

對於每一個循環的名稱改變像ACID1ACID2等。任何人都可以幫助我如何獲得這個文本框的value

+2

什麼時候你想讀取文本框的值?當用戶鍵入?\ – Tushar

+0

它隱藏輸入 – guradio

回答

2

(這是一個jquery解決方案,因爲這個問題是最初標記與jQuery)

可以使用帶有名字的輸入元件的選擇起始與^= ACID:

$("input[name^=ACID]").each(function(){ 
console.log($(this).val()); 
}); 
+2

是的,早些時候是。 – swapnilsm

+0

@KAD我總共有三個文本框,比如'ACID,RCID,NWID',因此,我需要使用循環的每個文本框變成總共3個循環嗎? –

+0

如果你想以同樣的方式處理它們,你可以合併選擇器:'$(「input [name^= ACID],input [name^= RCID],input [name^= NWID]」)' – KAD

0

嘗試使用通配符*在選擇器中將返回所有匹配的元素

document.querySelectorAll('[id*=ACID]') 
1

問題是用單個雙引號和雙引號:

var acidCount = document.getElementsByName("ACID"+index) 
+0

謝謝你的帖子,但它不工作... –

0

既然你命名你的元素'ACID' + index,您可以利用querySelector方法如下:

for (var i=0; i < arracid.length; i++) { 
    var $el = document.querySelector('#ACID' + i)); 
} 
0

您可以嘗試使用類名。

$(document).find(".tblrows").each(function(){ 
    console.log($(this).val()); 
}); 
2

既然你已經分配一個ID給您的投入,建議使用getElementsByIdgetElementsByName更快(更準確,因爲這些ID都應該是獨一無二的,而名不必是)。試試這個:

var acidCount = document.getElementById("ACID" + index); 

如果你還是想用getElementsByName,試試這個:

var acidCount = document.getElementsByName("ACID" + index); 

但請記住,getElementsByName返回元素的列表,但是列表中僅有一個元素,因爲你的名字是獨特。如果您想獲得該元素在列表中,你可以使用它的指數是這樣的:

var acidCount = document.getElementsByName("ACID" + index)[0]; 

另外,如果你想獲得的所有的輸入列表中,首先刪除從名稱索引:

cell1.innerHTML="<input type='hidden' name='ACID' class='tblrows' id='ACID"+index+"' value='"+arracid[temp]+"'>"; 

然後使用:

var acidCount = document.getElementsByName("ACID"); 

注:以上所有返回的DOM元素(一個或多個)。如果你只在值感興趣,使用value屬性:

var acidCount = document.getElementById("ACID" + index).value; 

var acidCount = document.getElementsByName("ACID" + index)[0].value; 
+0

我已經嘗試過'var acidCount = document.getElementsByName(「ACID」+ index)'this this but not工作..我會再試一次可能是我犯了錯誤..我會讓你知道 –

+0

它應該工作,但它會返回一個列表。它也自己返回DOM元素。檢查我更新的答案。 –

1

既然可以有同名的多個元素,所以我們需要獲得與第一要素該名稱,我已更正您的查詢檢查此,它將工作。

var acidCount = document.getElementsByName('ACID'+index)[0].value 
相關問題