如何计算HTML页面中的foreach循环

How can I count the foreach loops in the HTML page?

本文关键字:foreach 循环 HTML 何计算 计算      更新时间:2023-09-26

我有这个代码:

<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来绑定这些值。问题是我需要计算foreah循环。mainData由上传表单(顶部)填写。每个附加的文件都是表中的一行。我无法计算视图模型中的mainData,因为当它被调用时,mainData是空的。我也试过:

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

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

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

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

rowCount = $('table[name="details"] tr').length;
$(document).ready(function() {
    rowCount = $('table[name="details"] tr').length;
    alert(rowCount);
});