Sum django使用JavaScript生成表值

时间:2016-07-02 07:17:27

标签: javascript jquery python html django

我有一个表格,下面是一个django for循环。我添加了一些JavaScript来汇总/添加asset.by_item_weight列中的所有总计。

由于某些原因,我没有得到totalCol td。

中返回的值

我已将脚本标记放在此.html的底部,希望在运行JS之前将django生成的值加载到td中。

可能是我接近这是错误的方式或者这个<script>应该在哪里。

我试图将脚本标记放在关闭body标记之前的personal / header.html中,这没有任何区别。

非常感谢任何帮助。

 {% extends "personal/header.html" %}


{% block content %}

<h1 class='text-center'>This is the full asset list not split by owner</h1></br>




    <table id="sum_table" class="well table table-striped text-center">
        <thead>
            <tr class="text-center titlerow">
                <td class="text-center">Asset ID:</td>
                <td class="text-center">Asset Name:</td>
                <td class="text-center">Asset Quantity:</td>
                <td class="text-center">Asset Weight / kg:</td>
                <td class="text-center">Total Weight / kg:</td>
                <td class="text-center">Asset Owner:</td>
            </tr>
        </thead>
        <tbody>
            <tr class="text-center">

    {% for asset in object_list %}
                <td><a href="/sam/assets/{{ asset.id }}">{{ asset.id }}</></td>
                <td>{{ asset.asset_name }}</td>
                <td>{{ asset.asset_quantity }}</td>
                <td>{{ asset.asset_weight }}</td>
                <td class="rowDataSd">{{ asset.by_item_weight }}</td>
                <td><a href="/sam/owners/">{{ asset.asset_owner }}</></td>

            </tr>
    {% endfor %}

            <tr class="totalColumn">
                <td class=""></td>
                <td class=""></td>
                <td class=""></td>
                <td class=""></td>
                <td class="totalCol">Total:</td>
                <td class=""></td>
            </tr>
        </tbody>
    </table>

<p class="text-center">{% include "sam/includes/backtosam.html" %}</p>



{% endblock %}
<script>
       var totals=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
        $(document).ready(function(){

            var $dataRows=$("#sum_table tr:not('.totalColumn, .titlerow')");

            $dataRows.each(function() {
                $(this).find('.rowDataSd').each(function(i){        
                    totals[i]+=parseInt( $(this).html());
                });
            });
            $("#sum_table td.totalCol").each(function(i){  
                $(this).html("total:"+totals[i]);
            });

        });
</script>

1 个答案:

答案 0 :(得分:1)

  • 为什么在只有一个时会迭代#sum_table td.totalCol
  • 为什么要用一堆零预先填充你的数组?
  • 为什么要使用数组呢?

您的代码应该是这样的:

var total = 0;
$('#sum_table tr td.rowDataSd').each(function() {
    total += parseInt($(this).text());
});
$('#sum_table td.totalCol').text("total: " + total);
  • 正如Daniel Roseman所说,你为什么要用JS做这件事?