我需要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+"')
仍无效
对于每个循环,名称都在变化,例如ACID1
,ACID2
等。有人可以帮助我如何获取此文本框的value
吗?
答案 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());
});