从数组中获取值

时间:2014-07-28 19:48:42

标签: javascript jsp html-table

我的jsp中有一张表:

<table id="table">
    <tr>
        <th>Valor</th>
        <th>Recompensa</th>
    </tr>
    <tr>
        <td>
            <input type="text" name="amount">
        </td>
        <td>
            <input type="text" name="text">
        </td>

    </tr>

</table>

<input type="button" value="Send" onclick="send('table')"/>

我在框中写了一些东西,然后按发送,调用send Javascript方法。

Javascript send方法,遍历行和单元格,并将值存储在数组中:

function send(tableID) {


        var table = document.getElementById(tableID);


        var array= new Array();

        for (var i = 1;i<table.rows.length; i++){

            var row = table.rows[i];
            for (var j = 0;row.cells.length; j++){

                alert("added to array: "+row.cells[j].innerHTML);
                array.push(row.cells[j].innerHTML);

            }
        }
    }

我得到&#34; <input name="amount" type="text">&#34;在警报中。我尝试使用row.cells[j].firstChild.innerHTML,接收未定义。

我做错了什么?我怎么能得到用户在文本框中写的内容?

PS:我正在使用Firefox进行测试。可能是浏览器问题?

3 个答案:

答案 0 :(得分:3)

您可以使用:

alert("added to array: " + row.cells[j].getElementsByTagName('INPUT')[0].value);

jsFiddle示例:http://jsfiddle.net/4TjYH/

编辑:顺便说一句,为了简单起见,您发布的代码可能已被删除,但如果它是您的实际代码,您可以真正简化它:

function send(tableID) {
    var array = new Array(),
        inputs = document.getElementById(tableID).getElementsByTagName('INPUT');
    for (var i = 0; i < inputs.length; i++){
        alert("added to array: " + inputs[i].value);
        array.push(inputs[i].value);
    }
}

答案 1 :(得分:2)

在第二个循环中出现错误:

for (var j = 0; j < row.cells.length; j++){

“j&lt;”失踪。同样的问题出现在加文的答案中:这里是编辑小提琴:http://jsfiddle.net/h693g/2/

答案 2 :(得分:0)

好吧,如果您只想要用户在文本框中输入的内容,您可以为每个文本框分配ID并使用getElementById():

 <input type="text" name="amount" id="amount">
 <input type="text" name="text" id="text">

 var amount = document.getElementById("amount");
 var text = document.getElementById("text");

然后在数组上推送这两个值:

array.push(amount.value);
array.push(text.value);

如果您不想反复编写类似的代码,可以将此逻辑放在循环中,循环遍历元素ID数组或其他内容。