首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在JavaScript中对forEach循环的每一行做一个数学函数?

如何在JavaScript中对forEach循环的每一行做一个数学函数?
EN

Stack Overflow用户
提问于 2018-06-26 08:25:57
回答 1查看 237关注 0票数 3

我有一个由forEach循环(通过数据库循环)创建的表。我正在尝试做的是通过每一行的数量x速率乘以来计算价格。我有一个JavaScript函数(BoqMath)来做这件事,但它只适用于第一行(第一个循环)。如何才能将其更改为对每行(所有循环)执行此数学运算?

表:

<% user.myrates.forEach(function(myrates){ %>

    <tr>
        <td><input type='text' class='form-control' value = "<%= myrates.boqUnit %>"></td>
        <td><input type='text' class='form-control qty' oninput = "boqMath()"></td>
        <td><div class="input-icon"><i>$</i><input type='text' class='form-control rate' oninput="boqMath()" value="<%= myrates.boqRate %>"></div></td>
        <td><div class="input-icon"><i>$</i><input type='text' class='form-control price' oninput="boqMath()"></div></td>
        <td><button type="submit" name="submit" class="btn btn-primary">Add</button></td>
    </tr>       
<% }); %>

这是函数:

function boqMath(){

    var a = document.querySelector('.qty').value;
    var b = document.querySelector('.rate').value;
    var price = document.querySelector('.price');
    price.value = (Number(a) * Number(b)).toLocaleString();

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-26 08:35:49

将当前元素传递给boqMath()。由此,您可以找到最接近的tr,并获得该行的输入。

function boqMath(element) {
    row = element.closest("tr");
    var qty = row.querySelector(".qty").value;
    var rate = row.querySelector(".rate").value;
    var price = row.querySelector(".price");
    price.value = (qty * rate).toLocaleString();
}

oninput = "boqMath()">更改为oninput="boqMath(this)"

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51033377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档