我想遍历表并将输入值保存到数组中,但是我得到了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获取复选框值。我将非常感谢您的帮助。
答案 0 :(得分:2)
Find()是jQuery在元素上提供的方法。如果要使用它,则必须首先访问jQuery对象。
$("#tab tr td").each(function() {
var ans= $(this).find("input").val();
// do stuff here
});
小jsFiddle。您可以找到有关查找方法in the jQuery docs的更多详细信息。
答案 1 :(得分:2)
最好猜测,看起来你在混合传统的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]
也应该是非空的,所以最后一位加上它。
var check = table.rows[i].cells[j-1].find('input'); //err
这应该是错误的,因为find
元素上没有td
方法。
但是,find
是一个众所周知的jQuery方法,所以很可能是你的意思
var check = $(table.rows[i].cells[j-1]).find('input');
或者,你也可以看看使用
table.rows[i].cells[j-1].querySelector("input");
我没有测试过,但应该做你想做的事。