我想遍历表并将输入值保存到数组,但出现js错误:
Object doesn't support property of method 'find'
这是我的代码:
function Elem(tex, check, r, c)
{
this.text = tex;
this.checkbox = check;
this.row = r;
this.column = c;
}
var Elems = [];
function fill()
{
var table = document.getElementById("tab");
for(var i=table.rows.length-1; i>=2; --i)
{
for(var j=table.rows[i].cells.length-1; j>=1 ; j=j-2)
{
var check = $(table.rows[i].cells[j-1]).find('input');
check = check.is(":checked");
var ans = $(table.rows[i].cells[j]).find('input');
ans = ans.val();
var ans = new Elem(ans, check, i, j/2);
Elems.push(ans);
}
}
}
这是我的桌子的样子:
...
<table id="tab">
<tr>
<td rowspan="2">
<strong>delete row</strong>
</td>
<td>
<strong>checkbox info</strong>
</td>
<td>
<strong>description</strong>
</td>
</tr>
<tr>
<td>
<strong>delete column</strong>
</td>
<td>
<input type='checkbox' name='delColumn_1'/>
</td>
</tr>
<tr>
<td>
<input type='checkbox' name="delRow_1"/>
</td>
<td>
<input type='checkbox' class='check' name="ele.check"/>
</td>
<td>
<input type='text' name="ele.text" required="required"/>
</td>
</tr>
</table>
...
我想从ele.text获取文本值,并从ele.check获取复选框值。我将非常感谢您的帮助。
最佳答案
最好的猜测是,您似乎在混合传统的JavaScript和jQuery而又不了解其连接。
走这行:
var check = table.rows[i].cells[j-1].find('input'); //err
如果您简单地将其分开,最终将发现问题。
var check = table.rows[i]
然后,如果返回非空值,则将其添加:
var check = table.rows[i].cells[j-1]
Than也应为非null,因此在其末尾添加。
var check = table.rows[i].cells[j-1].find('input'); //err
这应该会出错,因为
find
元素上没有td
方法。但是,
find
是一种众所周知的jQuery方法,因此您可能打算在代码中包含对jQuery的引用
将其更改为jQuery语法
var check = $(table.rows[i].cells[j-1]).find('input');
或者,您也可以考虑使用
table.rows[i].cells[j-1].querySelector("input");
我还没有测试过,但是应该做你想做的。
关于javascript - 获取输入值并将其保存到数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25506915/