0

这个问题是在解决了我的最后一个问题之后出现的,我想从隐藏的表单中获取一些值,但是当我尝试检索它们时只有空字符串出现,我考虑过只使用数组来存储引入的信息但我想知道是否可以事后检索它以及如何检索它。

此外,还有一个使用一些 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;  

    }

创建它后,我尝试访问它,但到目前为止没有运气,我只是无法获得用户在创建的输入字段中输入的内容。我怎样才能做到这一点?

我将原始 javascript 与 jQuery 一起使用,因此欢迎使用或不使用库的答案:)

4

1 回答 1

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)还有另一种方法,但它可能是一种矫枉过正。当您创建表单字段时,您可以将它们放在一个对象中(不是值,而是元素本身),甚至将其隐藏在一个闭包中。这样你就可以调用类似的东西

formElements.formFieldOne.value;
于 2010-08-11T07:46:04.703 回答