我的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进行测试。可能是浏览器问题?
答案 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数组或其他内容。