【发布时间】:2021-05-25 03:24:06
【问题描述】:
我有一个 alpineJS 组件,它在 init() 函数中存储数据。 在这个组件内部,我动态添加了 item 组件。动态添加的项目属性工作正常。但是我怎样才能将所有项目总计值相加并将它们放入我的 sub_total 字段中?下面附上示例代码。
我尝试了商品价格和数量变化的update()函数onkeyup。 但不工作。
<div x-data="init()">
<div x-data="item()">
<input type="text" name="price" id="price" x-model="price" x-on:keyup="update()">
<input type="text" name="qty" id="qty" x-model="qty" x-on:keyup="update()">
<input type="text" class="item-total" name="total" id="total" x-model="total()">
</div>
<div x-data="item()">
<input type="text" name="price" id="price" x-model="price" x-on:keyup="update()">
<input type="text" name="qty" id="qty" x-model="qty" x-on:keyup="update()">
<input type="text" class="item-total" name="total" id="total" x-model="total()">
</div>
<input type="text" name="sub_total" id="sub_total" x-model="sub_total">
<input type="text" name="vat" id="vat" x-model="vat">
<input type="text" name="total" id="total" x-model="total()">
<div>
<script>
function update() {
let sub_total = 0;
document.querySelectorAll(".item-total").forEach(function(el) {
sub_total += parseFloat(el.value);
});
console.log(sub_total);
document.getElementById("sub_total").value = sub_total;
return sub_total;
}
function item() {
price: 0,
qty: 0,
total() {
return this.price * this.qty;
}
}
function init() {
sub_total: 0,
tax: 0,
total() {
return this.sub_total + this.tax;
}
}
</script>
【问题讨论】:
标签: alpine.js