Javascript 通过复选框+选择列表计算总价
我想通过选择列表+复选框计算总价 此代码显示列表tvs中所选元素的价格: 此代码显示选中复选框的价格:Javascript 通过复选框+选择列表计算总价,javascript,Javascript,我想通过选择列表+复选框计算总价 此代码显示列表tvs中所选元素的价格: 此代码显示选中复选框的价格: 嘿@musa94我假设你有一个相当大的应用程序,你把你的代码分成几个文件,然后找到一种方法从不同的代码块中总结出两个值。一种不改变太多现有代码的简单方法是定义一个共享数据对象,该对象保存您希望在整个应用程序中处理的值。通过访问数据对象中的值,可以对列表和复选框中的值求和 // define a data object that exists in your application window
嘿@musa94我假设你有一个相当大的应用程序,你把你的代码分成几个文件,然后找到一种方法从不同的代码块中总结出两个值。一种不改变太多现有代码的简单方法是定义一个共享数据对象,该对象保存您希望在整个应用程序中处理的值。通过访问数据对象中的值,可以对列表和复选框中的值求和
// define a data object that exists in your application
window.__ = window.__ || { data: { total: 0, modal: 0 } };
$(document).ready(function () {
var cheap = false;
$('#tvs').change(function () {
var total = getTvsTotal(cheap);
// update your view
$('.total').val(total.toFixed(2) + '' + '$');
// update your data object
__.data.total = total;
console.log('review data object', __);
});
});
$(document).ready(function () {
$('form .qty, form .idRow').change(function () {
var total = update_amounts_modal();
$('.total-modal').text(total.toFixed(2) + ' ' + '$');
__.data.modal = total;
console.log('review data object', __);
});
});
/**
* calculate your tvs total
* @param {boolean}
* @return {number}
*/
function getTvsTotal(cheap) {
var price = parseFloat($('.total').data('base-price')) || 0;
$('#tvs').each(function (i, el) {
price += parseFloat($('option:selected', el).data(cheap ? 'cheap' : 'price'));
console.log('list total:', price);
});
return price;
}
/**
* calculate your amounts modal
* @return {number}
*/
function update_amounts_modal() {
var sum = 0.0;
$('form').each(function () {
var qty = $(this).find('.qty').val();
var price = $(this).find('.price').val();
var isChecked = $(this).find('.idRow').prop("checked");
var amount;
if (isChecked){
qty = parseInt(qty, 10) || 0;
price = parseFloat(price) || 0;
amount = qty * price;
sum += amount;
}
console.log('sum:', sum);
});
return sum;
}
我看这里没有问题。有什么我们可以帮你做的吗?是的,我想要一个代码来计算这两个总数谢谢你什么是HTML代码,将显示结果?只是做了一个简单的测试。如果您有任何问题,请告诉我。首先,谢谢您,我需要另一个代码来显示两个总数的最终总数。我的意思是选择列表中的价格+复选框中的价格。我已经添加了行,以将列表中的总额和复选框中的复选框相加。看看是否有帮助。让我知道:太棒了!没问题。
<script type="text/javascript">
function update_amounts_modal() {
var sum = 0.0;
$('form').each(function () {
var qty = $(this).find('.qty').val();
var price = $(this).find('.price').val();
var isChecked = $(this).find('.idRow').prop("checked");
if (isChecked){
qty = parseInt(qty, 10) || 0;
price = parseFloat(price) || 0;
var amount = (qty * price);
sum += amount;
}
});
$('.total-modal').text(sum.toFixed(2) + ' ' + '$');
$().ready(function () {
update_amounts_modal();
$('form .qty, form .idRow').change(function () {
update_amounts_modal();
});
});
</script>
<div id="subusers" class="total-modal">0.00 $</div>
// define a data object that exists in your application
window.__ = window.__ || { data: { total: 0, modal: 0 } };
$(document).ready(function () {
var cheap = false;
$('#tvs').change(function () {
var total = getTvsTotal(cheap);
// update your view
$('.total').val(total.toFixed(2) + '' + '$');
// update your data object
__.data.total = total;
console.log('review data object', __);
});
});
$(document).ready(function () {
$('form .qty, form .idRow').change(function () {
var total = update_amounts_modal();
$('.total-modal').text(total.toFixed(2) + ' ' + '$');
__.data.modal = total;
console.log('review data object', __);
});
});
/**
* calculate your tvs total
* @param {boolean}
* @return {number}
*/
function getTvsTotal(cheap) {
var price = parseFloat($('.total').data('base-price')) || 0;
$('#tvs').each(function (i, el) {
price += parseFloat($('option:selected', el).data(cheap ? 'cheap' : 'price'));
console.log('list total:', price);
});
return price;
}
/**
* calculate your amounts modal
* @return {number}
*/
function update_amounts_modal() {
var sum = 0.0;
$('form').each(function () {
var qty = $(this).find('.qty').val();
var price = $(this).find('.price').val();
var isChecked = $(this).find('.idRow').prop("checked");
var amount;
if (isChecked){
qty = parseInt(qty, 10) || 0;
price = parseFloat(price) || 0;
amount = qty * price;
sum += amount;
}
console.log('sum:', sum);
});
return sum;
}