获取输入值并将其保存到阵列

时间:2014-08-26 13:21:13

标签: javascript

我想遍历表并将输入值保存到数组中,但是我得到了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获取复选框值。我将非常感谢您的帮助。

2 个答案:

答案 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方法,所以很可能是你的意思

  • 在代码中包含对jQuery的引用
  • 将其更改为jQuery语法
  • var check = $(table.rows[i].cells[j-1]).find('input');

或者,你也可以看看使用

table.rows[i].cells[j-1].querySelector("input");

我没有测试过,但应该做你想做的事。