JS-------------------计算小计金额和总计金额

1创建上述的效果:修改任意的天数或者标准,其对应的酬金(小计)和下面的合计的数值都随之改变:

[其中 天数下面的<input type="text" id="day"+<%=i%> name="day"+<%=i%>  value="0.0">

         标准下面的<input type="text" id="stander"+<%=i%> name="stander"+<%=i%>  value="0.0">

         酬金下面<label><input type="hidden" id="amt"+<%=i%> name="amt"+<%=i%>  value="0.0"></label>

        合计下面:<label id="sumCount"></label>

]

思路:

1.创建计算函数

function sumCount(){

var totleSum = 0.00;

//遍历表格中的每一行

var tabNode = document.getElementById("tab");

for(int i=0;i<tabNode.rows.length;i++){

//取计算小计需要的天数

var dayValue = document.getElementById("day"+i).value;

if(dayValue ==""){

    dayValue=0.00;

}

//取计算小计需要的标准

var standValue = document.getElementById("stander"+i).value;

if(standValue==""){

    standValue =0.00;

}

//计算小计

var mySum = dayValue * (standValue.replace(/(,)/g,"")) ;

//小计酬金赋值

var amtNode = doucment.getElementById("amt"+i);

amtNode.innerHTML = "mySum";

amtNode.value = "mySum";

//合计计算

totleSum += mySum ;

var  sumNode = document.getElementById("sumCount");

sumNode.innerHTML = "totleSum";

sumNode.value = "totleSum";

}

}

2.在每一个<tr></tr>中的<td></td>,即天数和标准都添加鼠标失焦事件(blur),鼠标失去焦点就去执行第一步的方法(计算小计和合计) onblur="sumCount()"

 

转载于:https://my.oschina.net/u/2870118/blog/733388

### 使用 `vue-plugin-hiprint` 插件实现表格金额汇总功能 为了实现表格金额的汇总功能,可以利用 Vue 的计算属性或者方法来处理数据,并将其传递给 `vue-plugin-hiprint` 打印插件。以下是具体的实现方式: #### 数据准备 假设有一个简单的表格数据结构如下所示: ```javascript const tableData = [ { name: '商品A', amount: 100 }, { name: '商品B', amount: 200 }, { name: '商品C', amount: 300 } ]; ``` 可以通过计算属性或方法动态计算金额--- #### 计算金额 在 Vue 组件中定义一个计算属性用于求: ```javascript computed: { totalAmount() { return this.tableData.reduce((sum, item) => sum + (item.amount || 0), 0); // 防止 undefined 值影响计算 [^1] } } ``` 此代码片段会遍历 `tableData` 数组并累加每项的 `amount` 属性值。 --- #### 定义打印模板 创建一个自定义打印模板,其中包含表格以及总计部分: ```html <template> <div id="print-template"> <h3>销售报表</h3> <table border="1" cellpadding="5" cellspacing="0"> <thead> <tr> <th width="200">名称</th> <th width="100">金额(元)</th> </tr> </thead> <tbody> <tr v-for="(row, index) in tableData" :key="index"> <td>{{ row.name }}</td> <td align="right">{{ row.amount.toFixed(2) }}</td> </tr> </tbody> <tfoot> <tr> <td><strong>合计:</strong></td> <td align="right"><strong>{{ totalAmount.toFixed(2) }}</strong></td> </tr> </tfoot> </table> </div> </template> ``` 上述 HTML 片段展示了如何构建带有总计行的表格。 --- #### 调用插件进行打印 调用 `vue-plugin-hiprint` 提供的方法执行打印操作: ```javascript methods: { handlePrint() { const templateId = '#print-template'; // 模板 ID const options = {}; // 可选参数,详见官方文档 [^3] this.$hiPrint.print(templateId, options); } } ``` 在此处,`this.$hiPrint.print()` 方法接受两个参数:一个是 DOM 元素的选择器字符串(即模板容器),另一个是可选配置对象。 --- #### 示例完整代码 将以上逻辑组合成完整的组件代码: ```vue <template> <div> <!-- 表格展示 --> <button @click="handlePrint">打印</button> <div id="print-template" style="display:none;"> <h3>销售报表</h3> <table border="1" cellpadding="5" cellspacing="0"> <thead> <tr> <th width="200">名称</th> <th width="100">金额(元)</th> </tr> </thead> <tbody> <tr v-for="(row, index) in tableData" :key="index"> <td>{{ row.name }}</td> <td align="right">{{ row.amount.toFixed(2) }}</td> </tr> </tbody> <tfoot> <tr> <td><strong>合计:</strong></td> <td align="right"><strong>{{ totalAmount.toFixed(2) }}</strong></td> </tr> </tfoot> </table> </div> </div> </template> <script> export default { data() { return { tableData: [ { name: '商品A', amount: 100 }, { name: '商品B', amount: 200 }, { name: '商品C', amount: 300 } ] }; }, computed: { totalAmount() { return this.tableData.reduce((sum, item) => sum + (item.amount || 0), 0); // 总计计算 } }, methods: { handlePrint() { const templateId = '#print-template'; const options = {}; this.$hiPrint.print(templateId, options); // 调用打印 API } } }; </script> ``` --- #### 注意事项 1. 如果需要更复杂的样式调整,请参考插件官方文档中的 CSS 支持说明。 2. 对于大数据量场景下的性能优化,建议分页加载数据后再传入打印模块。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值