这个问题出现在solving my last question之后,我想从隐藏的表单中获取一些值,但是当我尝试检索它们时只有空字符串,我考虑过只使用数组存储信息因为它被引入,但我想知道是否可能只是后来检索它以及如何。
此外,还有一个使用javascript实时生成的表:
function createTable(){
if ( document.getElementById("invoiceFormat").rowNumber.value != ""){
rows = document.getElementById("invoiceFormat").rowNumber.value;
}
var contents = "<table id='mt'><tr>";
if ( document.getElementById("invoiceFormat").cb1[0].checked ){
contents = contents + "<td class='htd'>Quantity</td>";
}if (document.getElementById("invoiceFormat").cb1[1].checked ){
contents = contents + "<td class='htd'>Description</td>";
}if (document.getElementById("invoiceFormat").cb1[2].checked ){
contents = contents + "<td class='htd'>Unitary Price</td>";
}if (document.getElementById("invoiceFormat").cb1[3].checked ){
contents = contents + "<td class='htd'>Subtotal</td>";
}
for (i=4; i<=k; i++){
if (document.getElementById("invoiceFormat").cb1[i].checked ){
contents = contents + "<td>" + document.getElementById("invoiceFormat").cb1[i].value + "</td>";
}
}
contents = contents + "</tr>";
for (j=1; j<=rows; j++){
contents = contents + "<tr>";
for (l=0; l<=k; l++){
if (document.getElementById("invoiceFormat").cb1[l].checked ){
hotfix = l +1;
contents = contents + "<td> <input id='cell" + j + "_" + hotfix + "' name='cell' type='text' size='15' /> </td>";
}
}
contents = contents + "</tr>";
}
contents = contents + "</table>";
var createdTable = document.getElementById("mainTable");
createdTable.innerHTML = contents;
}
创建之后我试图访问它但到目前为止没有运气,我只是无法获得用户在创建的输入字段中输入的内容。我怎么能这样做?
我正在使用带有jQuery的原始javascript,所以欢迎使用或不使用库的答案:)
答案 0 :(得分:0)
的document.getElementById( “invoiceFormat”)。CB1 [3] .checked
首先,我不知道“.cb1 [3]”在这里是什么意思,所以我会忽略它并告诉你如何解决这个问题:(我假设“invoiceFormat”是你表单的id。)
1)在您拥有的每个字段的表单集名称属性中。这样你可以像document.getElementById("invoiceFormat").fieldName.value
如果您将使用此方法,请确保将表单放在局部变量中。它会快很多
var form = document.getElementById("invoiceFormat");
form.fieldName.value;
2)为每个字段提供唯一ID,并直接在不在表单上的字段上使用getElementById。 如果这种方法更好,我不会起诉,但我一直在使用第二种方法。我猜我已经习惯了。
3)还有一种方法,但它可能是一种矫枉过正。在创建表单字段时,可以将它们放在一个对象中(不是值而是元素本身),甚至可以将它隐藏在closure中。这样你可以调用类似
的东西formElements.formFieldOne.value;