如何获取隐藏或自动生成的内容的价值?

时间:2010-08-11 06:53:25

标签: javascript hide on-the-fly

这个问题出现在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,所以欢迎使用或不使用库的答案:)

1 个答案:

答案 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;