将JQUERY函数转换为原生JavaScript

Convert JQUERY function into native JavaScript

本文关键字:原生 JavaScript 转换 JQUERY 函数      更新时间:2023-09-26

我一直在尝试将JQUERY函数转换为JavaScript。我不确定我做错了什么。当我在JS中重写函数时返回的值都返回0.0.

这是我想转换为纯JavaScript的JQUERY代码:

$('#tableID > tbody > tr > td:nth-child(' + starter + ')').each(function () {
    getAverage('#tableID > tbody > tr > td:nth-child(' + starter + ')', 'subTotal');
})

基本上我想删除。each()并使用原生JavaScript代替…

下面是完整的代码:

var el1 = $('#tableID > thead > tr > th:gt(17):not(.totalRow)');
var x = el1.length;
var starter = 19;
for (i = 0; i < x; i++) {
    $('#tableID > tbody > tr > td:nth-child(' + starter + ')').each(function () {
        getAverage('#tableID > tbody > tr > td:nth-child(' + starter + ')', 'subTotal');
    })
    starter += 1;
}
下面是getaaverage函数来帮助理解正在发生的事情:
//average function
function getAverage(a, b) {
    var $this, $content, tdTxt, theAvg; 
    var sum = 0;
    var count = 0;
    $(a).each(function () {
        $this = $(this); // cache $(this)
        $content = $this.html();
        tdTxt = parseFloat($this.text(), 10) || 0;
        if ($this.hasClass(b)) {
            theAvg = parseFloat((sum / count), 10) || 0;
            $this.text((theAvg).toFixed(2));
            sum = 0;
            count = 0;
        } else {
            sum += parseFloat(tdTxt);
            if ($content == '') {
            }
            else {
                ++count; // this micro-optimization makes it marginally faster
            }
        }
    })
}

ESNext code

Array.from(
  document
    .querySelectorAll('#tableID > tbody > tr > td:nth-child(' + starter + ')')
  ).forEach(_=> getAverage(
    '#tableID > tbody > tr > td:nth-child(' + starter + ')',
    'subTotal'
  ))