<table width="100%" cellpadding="0" cellspacing="0" bgcolor="#c1ebff">
<tr style="background-color:#D1EEEE;">
<td width="25%">商品</td>
<td width="8%">单价</td>
<td width="1%"></td>
<td width="5%">数量</td>
<td width="1%"></td>
<td width="8%">金额</td>
<td width="8%">基本操作</td>
</tr>
<tr>
<td>诺基亚</td>
<td><input type="text" name="price" id="price" value="¥3,000.00" /></td>
<td>×</td>
<td><input type="text" name="quantity" id="quantity" value="2"/></td>
<td>=</td>
<td><span id="bb1" style="color: #FFB90F;font-weight: bold;">¥6,000.00</span></td>
</tr>
</table>
如何通过js 把 金额给算出来?
9 个解决方案
#1
你上面都是些具体值。。2个文本框都是固定?
#2
获取那两个text的值后把两个值想乘innerHTML到span里 不很明白你的意思
#3
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<table width="100%" cellpadding="0" cellspacing="0" bgcolor="#c1ebff">
<tr style="background-color:#D1EEEE;">
<td width="25%">商品</td>
<td width="8%">单价</td>
<td width="1%"></td>
<td width="5%">数量</td>
<td width="1%"></td>
<td width="8%">金额</td>
<td width="8%">基本操作</td>
</tr>
<tr>
<td>诺基亚</td>
<td><input type="text" name="price" id="price" value="¥3,000.00" /></td>
<td>×</td>
<td><input type="text" name="quantity" id="quantity" value="2"/></td>
<td>=</td>
<td><span id="bb1" style="color: #FFB90F;font-weight: bold;">¥6,000.00</span></td>
</tr>
</table>
<script type="text/javascript">
//计算函数
function countAmount() {
var price = document.getElementById('price').value;
var quantity = document.getElementById('quantity').value;
//单价处理
price = price.replace(/[¥,]/g, '');
var amount = (price * quantity).toFixed(2);
//格式处理,添加千分位逗号
var ar = amount.toString().split('.');
var amount = [];
ar_tmp = ar[0].split('');
ar_tmp.reverse();
for(var i = 0; i < ar_tmp.length; i ++) {
(i + 1) % 3 == 0 ? amount.push(',' + ar_tmp[i]) : amount.push(ar_tmp[i]);
}
amount = '¥' + amount.reverse().join('') + '.' + ar[1];
document.getElementById('bb1').innerHTML = amount;
}
document.getElementById('price').onchange = countAmount;
document.getElementById('quantity').onchange = countAmount;
</script>
</body>
</html>
#4
确实是这样的 我还想问一下 就是单价如果我把默认的¥3,000.00 去掉 然后直接输入2000 如何才能自动的返回¥2,000.00
#5
请参考countAmount()函数中格式处理部分代码。
#6
恩 谢谢了
#7
出现了BUG...就是单价输入50~100之间 数量还是2个 出现了BUG 不知道怎么回事
#8
不是固定 单价与数量都可以修改
#9
恩,是的,没有考虑到数值整数部分的位数为3的倍数的情况,修改一行代码即可:
(i + 1) % 3 == 0 && i < ar_tmp.length - 1 ? amount.push(',' + ar_tmp[i]) : amount.push(ar_tmp[i]);
#1
你上面都是些具体值。。2个文本框都是固定?
#2
获取那两个text的值后把两个值想乘innerHTML到span里 不很明白你的意思
#3
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<table width="100%" cellpadding="0" cellspacing="0" bgcolor="#c1ebff">
<tr style="background-color:#D1EEEE;">
<td width="25%">商品</td>
<td width="8%">单价</td>
<td width="1%"></td>
<td width="5%">数量</td>
<td width="1%"></td>
<td width="8%">金额</td>
<td width="8%">基本操作</td>
</tr>
<tr>
<td>诺基亚</td>
<td><input type="text" name="price" id="price" value="¥3,000.00" /></td>
<td>×</td>
<td><input type="text" name="quantity" id="quantity" value="2"/></td>
<td>=</td>
<td><span id="bb1" style="color: #FFB90F;font-weight: bold;">¥6,000.00</span></td>
</tr>
</table>
<script type="text/javascript">
//计算函数
function countAmount() {
var price = document.getElementById('price').value;
var quantity = document.getElementById('quantity').value;
//单价处理
price = price.replace(/[¥,]/g, '');
var amount = (price * quantity).toFixed(2);
//格式处理,添加千分位逗号
var ar = amount.toString().split('.');
var amount = [];
ar_tmp = ar[0].split('');
ar_tmp.reverse();
for(var i = 0; i < ar_tmp.length; i ++) {
(i + 1) % 3 == 0 ? amount.push(',' + ar_tmp[i]) : amount.push(ar_tmp[i]);
}
amount = '¥' + amount.reverse().join('') + '.' + ar[1];
document.getElementById('bb1').innerHTML = amount;
}
document.getElementById('price').onchange = countAmount;
document.getElementById('quantity').onchange = countAmount;
</script>
</body>
</html>
#4
确实是这样的 我还想问一下 就是单价如果我把默认的¥3,000.00 去掉 然后直接输入2000 如何才能自动的返回¥2,000.00
#5
请参考countAmount()函数中格式处理部分代码。
#6
恩 谢谢了
#7
出现了BUG...就是单价输入50~100之间 数量还是2个 出现了BUG 不知道怎么回事
#8
不是固定 单价与数量都可以修改
#9
恩,是的,没有考虑到数值整数部分的位数为3的倍数的情况,修改一行代码即可:
(i + 1) % 3 == 0 && i < ar_tmp.length - 1 ? amount.push(',' + ar_tmp[i]) : amount.push(ar_tmp[i]);