如何通过动态名称从文本框中获取值

时间:2017-06-20 06:25:36

标签: javascript

我需要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吗?

7 个答案:

答案 0 :(得分:2)

(这是一个jquery解决方案,因为问题最初用jQuery标记)

您可以使用名称以^= ACID:

开头的输入元素的选择器
$("input[name^=ACID]").each(function(){
 console.log($(this).val());
});

答案 1 :(得分:2)

由于您已经为输入分配了ID,因此建议使用比getElementsById更快的getElementsByName(并且更准确,因为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;

答案 2 :(得分:1)

问题是单个quoutes和双引号:

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

答案 3 :(得分:1)

由于可以有多个具有相同名称的元素,因此我们需要获取具有该名称的第一个元素,我已经更正了您的查询,请检查它,它将起作用。

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

答案 4 :(得分:0)

尝试在选择器中使用通配符*,它将返回所有匹配的元素

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

答案 5 :(得分:0)

由于您要为元素'ACID' + index命名,因此您可以使用querySelector方法,如下所示:

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

答案 6 :(得分:0)

您可以尝试使用班级名称。

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