1

我有这个代码:

<div class="main">
    <form id="uploadFile" data-bind="attachForm: uploadFile">
        <div id="queue"></div>
        <input id="file_upload" name="file_upload" type="file" multiple = "true">
        <input type="hidden" id="SESSION" name="SESSION" data-bind="value: session" />
    </form>

    <table class="dataTable" name="details">
        <thead>
            <tr>
                <th data-bind="text: MDCode"></th>
                <th data-bind="text: TargetAchieved"></th>
                <th data-bind="text: Month"></th>
                <th data-bind="text: Year"></th>
                <th data-bind="text: MDName"></th>
                <th data-bind="text: Document"></th>
            </tr>
        </thead>
        <tbody data-bind="foreach: mainData">
            <tr>
                <td data-bind="text: MDCode"></td>
                <td data-bind="text: targetAchieved"></td>
                <td data-bind="text: month"></td>
                <td data-bind="text: year"></td>        
                <td data-bind="text: MDName"></td>
                <td> Open </td>
            </tr>
        </tbody>
    </table>
</div>

knockoutjs用来绑定值。问题是我需要计算前循环。由mainData上传表格填写(在顶部)。每个附加的文件都是表格中的一行。我无法计算mainData我的视图模型的内部,因为当它被调用时mainData是空的。我也试过:

rowCount = $('#details tr').length;
console.log(rowCount);

但它总是返回 0,因为调用 viewModel 时根本没有行。

请帮我解决这个问题。我很确定问题出在我的逻辑之内,或者我遗漏了一些非常小的东西,但我无法发现它。

4

2 回答 2

3

您需要更改选择器,因为details不是id表的,而是表,name所以您需要使用属性选择器

rowCount = $('table[name="details"] tr').length;
于 2013-08-15T07:09:05.043 回答
0
$(document).ready(function() {
    rowCount = $('table[name="details"] tr').length;
    alert(rowCount);
});
于 2013-08-16T06:13:55.117 回答