javascript - 计算多个字段的值并在 Javascript 中显示每一行

标签 javascript html codeigniter

我有一张发票,它不是表格,而是在 html 的 div 中有一些输入字段。这些字段是通过单击按钮动态创建的。

<li><input type="text" id="cost[]" name="unit[]" value="<?php echo $val->unit ; ?>"> </li>
<li><input type="text" id="qty[]" name="rate[]" value="<?php echo $val->rate ; ?>"> </li>
<li><input type="text" id="price[]" name="total[]" value="<?php echo $val->total ; ?>"> </li>

现在我想将单位乘以比率并将其显示在总计字段中。

我的Javascript是

 window.onkeyup=function() {

        var str = document.getElementById("cost[]").value;
        var str1 = document.getElementById("qty[]").value;
        var price = parseFloat(str*str1);
        document.getElementById("price[]").value = price;
}

上面的 javascript 工作正常,但它只适用于第一行。对于第一行下方的其余行,它不起作用。我想要所有行的计算。我已经看到了一些答案,但它们都不适用于我的情况。

欢迎任何帮助。

最佳答案

我从您的代码中观察到您可能对多个项目使用相同的 ID。

“id”属性为元素指定一个名称。此名称在文档中必须是唯一的。

尽管我们有类似的解决方法:

document.querySelectorAll("[id='someID']");

要选择具有相同“id”的所有元素,您的 HTML 将无效。

这就是为什么我们用“类”代替。类是一组元素。

虽然我使用了“name”属性。

可能是您正在寻找的:

 window.onkeyup=function() {
	
var items = document.querySelectorAll(".item");
var itemsArray = Array.prototype.slice.call(items,0);
var unit, rate, total, net = 0;
itemsArray.forEach(function(el){
	unit = el.querySelector('input[name="unit[]"]').value;
	rate = el.querySelector('input[name="rate[]"]').value;
	total = unit * rate;
	el.querySelector('input[name="total[]"]').value = total;
	net+=total;
});
document.getElementById('net').value=net;
}
<div class='item'>
	<li><input type="text"  name="unit[]" value=""> </li>
	<li><input type="text"  name="rate[]" value=""> </li>
	<li><input type="text" name="total[]" value=""> </li>
</div>

<br><br>

<div class='item'>
	<li><input type="text" name="unit[]" value=""> </li>
	<li><input type="text" name="rate[]" value=""> </li>
	<li><input type="text" name="total[]" value=""> </li>
</div>

</br></br>

<li><input id='net' type="text" name="net[]" value=""> </li>

关于javascript - 计算多个字段的值并在 Javascript 中显示每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48582219/

相关文章:

javascript - React - 在下拉列表中过滤?

javascript - 如果应用程序存在,链接到打开的 facebook 应用程序,否则网页

html - 如何使用 CSS 为图像赋予哑光效果(非玻璃状)?

javascript - 在转动滚轮之前,谷歌浏览器不会在某些网站上应用来自自建扩展的注入(inject)代码

php - 使用 codeigniter 从 2 个表中获取数据

php - PHP (CodeIgniter) 文件下载中的空行

javascript - 有没有办法在指令中获取类宽度?

javascript - 使用正则表达式将输入格式设置为单字符逗号单字符逗号等

html - 导航栏突然在顶部而不是底部 HTML

php - 从文本文件插入数据库,使用特殊字符,如 , 和\