2017-06-20 70 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 
相关问题