- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用简单的 Html 表来显示数据。当表中有多达 100 行时,一切都很顺利,但是当行数从 100 行增加时,计算会花费太多时间
这是我的 jquery 代码
$('body').on('keyup', 'input[class*="quantity"],input[class*="unit-price"],input[class*="gst-tax-value"],input[class*="new-price-value"]', function () {
// alert("Called");
var tr = $(this).parents('tr');
// var ths = $(this);
/////////variables for classes///////
var input_quantity_class = '.quantity';
var text_gst_amount_class = '.gst-amount';
var input_gst_tax_value_class = '.gst-tax-value';
var input_gst_tax_amount_class = '.gst-tax-amount-value';
var input_unitprice_class = '.unit-price';
var input_unitprice_tax_class = '.new-price-value';
var text_totalprice_without_gst_class = '.total-price-without-gst';
var input_totalprice_without_gst_class = '.total-price-without-gst-value';
var text_totalprice_class = '.total-price';
var input_totalprice_class = '.total-price-value';
var is_usd = $('input[class*="rdo-currency-clx"]:checked').val();
////////defining variables////////
var quantity = 0;
var unit_price = 0;
var gst_percentage = 0;
var gst_amount = 0;
var total_gst_amount = 0;
var price_without_gst = 0;///////unitprice with/without gst/////
var total_with_gst = 0; //unitprice + gst_amount * quantity///
var total_wod_gst = 0; //unitprice * quantity/
var total_price = 0; //unitprice * quantity//
var unitprice_withgst = 0;
//////////getting values//////////
quantity = (tr.find(input_quantity_class).val() != undefined || tr.find(input_quantity_class).val() != "") ? parseFloat(tr.find(input_quantity_class).val()) : 0;
unit_price = (tr.find(input_unitprice_class).val() != undefined || tr.find(input_unitprice_class).val() != "") ? parseFloat(tr.find(input_unitprice_class).val()) : 0;
gst_percentage = (tr.find(input_gst_tax_value_class).val() != undefined || tr.find(input_gst_tax_value_class).val() != "") ? parseFloat(tr.find(input_gst_tax_value_class).val()) : 0;
gst_amount = unit_price * gst_percentage / 100;
total_gst_amount = gst_amount * quantity;
total_price = unit_price * quantity;
total_with_gst = total_price + total_gst_amount;
total_wod_gst = total_price;
unitprice_withgst = unit_price + gst_amount;
////////amount figur masking///////////
gst_amount = (is_usd == 1) ? Math.round(gst_amount) : gst_amount.toFixed(2);
total_gst_amount = (is_usd == 1) ? Math.round(total_gst_amount) : total_gst_amount.toFixed(2);
// total_price = (is_usd == 1)?Math.round(total_price):accounting.formatMoney(total_price.toFixed(2), "", 2, ",", ".");
total_with_gst = (is_usd == 1) ? Math.round(total_with_gst) : total_with_gst.toFixed(2);
total_wod_gst = (is_usd == 1) ? Math.round(total_wod_gst) : total_wod_gst.toFixed(2);
unitprice_withgst = (is_usd == 1) ? Math.round(unitprice_withgst) : unitprice_withgst.toFixed(2);
if (!isNaN(unit_price) && unit_price != undefined && unit_price != "") {
tr.find(text_gst_amount_class).html(accounting.formatMoney(total_gst_amount, "", 2, ",", "."));
tr.find(input_gst_tax_amount_class).val(total_gst_amount);
tr.find(text_totalprice_without_gst_class).html(accounting.formatMoney(total_wod_gst, "", 2, ",", "."));
tr.find(input_totalprice_without_gst_class).val(total_wod_gst);
tr.find(text_totalprice_class).html(accounting.formatMoney(total_with_gst, "", 2, ",", "."));
tr.find(input_totalprice_class).val(total_with_gst);
getFooterTotal();
getGrandTotal();
}
});
//calculations of footer total of table
function getFooterTotal() {
var is_usd = $('input[class*="rdo-currency-clx"]:checked').val();
var rows = $('tbody.databody tr');
var gst_footer_total = 0;
var price_footer_total = 0;
var totalprice_withgst_footer_total = 0;
var totalprice_wotgst_footer_total = 0;
$(rows).each(function (i, val) {
tr = $(this);
is_checked = tr.find('input.item-value').val();
if (is_checked == 1) {
gst_footer_total += (isNaN(tr.find('input.gst-tax-amount-value').val()) || tr.find('input.gst-tax-amount-value').val() == undefined || tr.find('input.gst-tax-amount-value').val() == "") ? 0 : parseFloat(tr.find('input.gst-tax-amount-value').val());
price_footer_total += (isNaN(tr.find('input.new-price-value').val()) || tr.find('input.new-price-value').val() == undefined || tr.find('input.new-price-value').val() == "") ? 0 : parseFloat(tr.find('input.new-price-value').val());
totalprice_wotgst_footer_total += (isNaN(tr.find('input.total-price-without-gst-value').val()) || tr.find('input.total-price-without-gst-value').val() == undefined || tr.find('input.total-price-without-gst-value').val() == "") ? 0 : parseFloat(tr.find('input.total-price-without-gst-value').val());
totalprice_withgst_footer_total += (isNaN(tr.find('input.total-price-value').val()) || tr.find('input.total-price-value').val() == undefined || tr.find('input.total-price-value').val() == "") ? 0 : parseFloat(tr.find('input.total-price-value').val());
}
});
gst_footer_total = (is_usd == 1) ? Math.round(gst_footer_total) : gst_footer_total.toFixed(2);
price_footer_total = (is_usd == 1) ? Math.round(price_footer_total) : price_footer_total.toFixed(2);
totalprice_wotgst_footer_total = (is_usd == 1) ? Math.round(totalprice_wotgst_footer_total) : totalprice_wotgst_footer_total.toFixed(2);
totalprice_withgst_footer_total = (is_usd == 1) ? Math.round(totalprice_withgst_footer_total) : totalprice_withgst_footer_total.toFixed(2);
$('body').find('td#td-gst-amount').html(accounting.formatMoney(gst_footer_total, "", 2, ",", "."));
$('body').find('td#td-unit-gst').html(accounting.formatMoney(price_footer_total, "", 2, ",", "."));
$('body').find('#span-total-wot-gst').html(accounting.formatMoney(totalprice_wotgst_footer_total, "", 2, ",", "."));
$('body').find('input.total_wot_gst').val(totalprice_wotgst_footer_total);
$('body').find('#span-total-with-gst').html(accounting.formatMoney(totalprice_withgst_footer_total, "", 2, ",", "."));
$('body').find('input.total_with_gst').val(totalprice_withgst_footer_total);
}
///////calculation of grand total//////////////
function getGrandTotal() {
var is_gst = $('input.gst_val_clx').val();
var is_usd = $('input[class*="rdo-currency-clx"]:checked').val();
var amount_with_gst = parseFloat($('input.total_with_gst').val());
// alert(amount_with_gst);return;
var amount_without_gst = parseFloat($('input.total_wot_gst').val());
var freight_amount = parseFloat($('input.freight_amount').val());
var discount_amount = parseFloat($('input.discount_amount').val());
var freight_operation = $('input[class*="charges_operation"]:checked').val();
var discount_operation = $('input[class*="discount_operation"]:checked').val();
// alert(discount_operation);
var grand_total = (is_gst == 1) ? amount_with_gst : amount_without_gst;
// console.log(is_gst+" Freight Operation "+freight_operation +" Discount Operation "+discount_operation+" Total "+amount_with_gst);return;
if (isNaN(amount_with_gst) || amount_with_gst == undefined || amount_with_gst == "")
amount_with_gst = 0;
if (isNaN(amount_without_gst) || amount_without_gst == undefined || amount_without_gst == "")
amount_without_gst = 0;
if (isNaN(discount_amount) || discount_amount == undefined || discount_amount == "")
discount_amount = 0;
if (isNaN(freight_amount) || freight_amount == undefined || freight_amount == "")
freight_amount = 0;
if (is_gst == 1) {
if (freight_operation == 1)
grand_total += freight_amount;
else
grand_total -= freight_amount;
if (discount_operation == 1)
grand_total += discount_amount;
else
grand_total -= discount_amount;
} else {
if (freight_operation == 1)
grand_total += freight_amount;
else
grand_total -= freight_amount;
if (discount_operation == 1)
grand_total += discount_amount;
else
grand_total -= discount_amount;
}
grand_total = (is_usd == 1) ? Math.round(grand_total) : grand_total.toFixed(2);
$('td span.total-amount').html(accounting.formatMoney(grand_total, "", 2, ",", "."));
$('input.total-amount-value').val(grand_total);
}
能否请您建议我如何提高 jquery 中计算数据运行时间的速度谢谢
这是我的 Html 表格图片:
我正在计算每一行以及总计
最佳答案
我觉得你的代码还不错。
我看到的一个改进是您可以避免对 find()
的一些不必要的调用,因为它是一个“昂贵的”jQuery() 操作。
quantity = (tr.find(input_quantity_class).val() != undefined || tr.find(input_quantity_class).val() != "") ? parseFloat(tr.find(input_quantity_class).val()) : 0;
tr.find(input_quantity_class)
被调用 2 次(一次用于 undefined
检查,一次用于 if or else)
通过“缓存”find()
的结果来避免这些多次 find()
调用:
quantityVal = tr.find(input_quantity_class).val();
quantity = (quantityVal != undefined || quantityVal != "") ? parseFloat(quantityVal) : 0;
如果你在任何地方都喜欢这样做,它应该会提升你的脚本。性能示例可以在 this answer 中找到.也看看 Optimize Selectors确保尽可能使用最快的选择器。
关于javascript - 如何加快jquery中行的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42579714/
我想使用 ffmpeg 框架更改视频速度。我为此使用了这个命令: ffmpeg -y -i /storage/extSdCard/Video/1.avi -filter_complex [0:v]fp
我有以下数据数组,有 200 万个条目: [20965 1239 296 231 -1 -1 20976 1239 299 314 147 337 255
我正在使用 Oracle 数据库,并且想获取一个包含 3000 万条记录的表。 library(RODBC) ch <- odbcConnect("test", uid="test_user",
我在 android 上使用 FFmpeg 来: 1- 合并 3 个视频 2-添加音频 3-添加标志 4-修剪 3 个视频之一 5-改变输出的fps 我已经实现了正确的代码,但花了 30 分钟。对于(
我使用 GLPKMathProgInterface 和 JuMP 编写了一个程序来解决 Julia 中的线性程序。 Julia 代码由 python 程序调用,该程序通过多个命令行调用运行多个 Jui
我们使用 POV-Ray 每次运行生成大约 80 张图像,我们将这些图像拼接在一起形成两个移动的 GIF 文件(一个场景的两个 360 度 View )。我们正在寻找尽可能加快此镜像创建的方法(在 h
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我将数据从一个数据库插入到另一个数据库,所以我有 2 个连接(Conn1 和 Conn2)。下面是代码(使用pypyodbc)。 import pypyodbc Conn1_Query = "SE
在我的应用程序中,我显示 EKEvents 列表,我想在 UITableView 中显示一个月的所有事件,每个部分包含各自的日期。嗯,这可行,我得到了我需要的所有数据,但获取速度非常慢。 问题在于事件
我有一个移动速度非常慢的传送带。我不知道什么JS脚本控制速度,我需要它来加速。无法从主题制作者那里获得任何帮助。任何建议都会非常有帮助。谢谢 页面: http://krankgolf2017.wpen
有没有办法加快这段代码的速度?我需要它来删除相同的内容并将其写入单元格,以强制其他 VBA 代码运行另一列上的代码。这就是它的作用,只是 super 慢。有时此表上有 2000 个条目/行。每个单元大
我正在开发一个相当大的程序,它再次从一个相当大的 Excel 电子表格中获取数据。由于一些奇怪的原因,加载这个大的 Excel 文件需要很长时间,我希望能以某种方式加快速度。我做了自己的研究并尝试了
我有下面的代码,将所有按钮(有 10 个)着色为灰色,以清除任何先前着色的按钮,然后将所选按钮着色为蓝色。基本上充当当前选择哪个按钮的指示器。我注意到代码现在需要一些时间才能通过这种修饰添加来运行,我
我有一个 LINQ 查询,它正在搜索包含大约 250,000 条记录的 SQL 表,并且仅搜索 2 个字段。这两个字段都已建立索引,但我发现它的运行速度仍然相当慢。 下面是代码,有人可以提出任何建议来
对于相对较大的 Pandas DataFrame(几十万行),我想创建一个应用函数结果的系列。问题是该功能不是很快,我希望它能以某种方式加快速度。 df = pd.DataFrame({ 'valu
这个问题在这里已经有了答案: Faster weighted sampling without replacement (3 个答案) 关闭 9 年前。 如何在 R 中加快概率加权采样。 # Let
在运行 PhantomJS 提供的 rasterize.js 示例时,我发现我必须等待 20 秒或更长时间才能生成网页图像。 有没有可能在不消耗大量资源的情况下加快速度的方法?我基本上希望快速生成从加
我正在开发一个相当大的程序,它再次从一个相当大的 Excel 电子表格中获取数据。由于一些奇怪的原因,加载这个大的 Excel 文件需要很长时间,我希望能以某种方式加快速度。我做了自己的研究并尝试了
我有下面的代码,将所有按钮(有 10 个)着色为灰色,以清除任何先前着色的按钮,然后将所选按钮着色为蓝色。基本上充当当前选择哪个按钮的指示器。我注意到代码现在需要一些时间才能通过这种修饰添加来运行,我
我有一个 Excel 工作簿,用户通过单击按钮导入文本文件。我的代码完全按照我的需要工作,但是在填写 H 列“阅读日期”时速度非常慢。将文本文件导入 Excel 工作表后,我的 Excel 工作簿如下
我是一名优秀的程序员,十分优秀!