【发布时间】:2013-11-17 03:32:37
【问题描述】:
大家好,
拜托,我还在学习中。我正在尝试制作一个自动计算器脚本来计算价格(基于数量的折扣)并在文本字段中显示结果。
我编写了一个 javascript,但它似乎在我正在测试的这个示例 html 页面中不起作用。
<html>
<p>price calculator ( Rate: N1.50 )</p>
<br />
<label for="units">Units:</label>
<input name="units" type="text" id="units" value="1000" />
<script type="text/javascript">
var parray = "1000-9999:1.9; 10000-49999:1.8; 50000-99999:1.5; 100000-9999999:1.4; 10000000-0:1.4;";
var prices = parray.split(';');
var mins = new Array();
var maxs = new Array();
var rates = new Array();
for (var index in prices)
{
var price = prices[index];
var m = price.split(':');
if(m.length != 2) continue;
var u = m[0].split('-');
if(u.length == 2 && mins.length == maxs.length && maxs.length == rates.length)
{
rates[rates.length] = parseFloat(m[1]);
mins[mins.length] = parseFloat(u[0]);
maxs[maxs.length] = parseFloat(u[1]);
}
}
var pricemins = new Array();
var pricemaxs = new Array();
for(var i = 0; i < mins.length; i++)
{
pricemins[i] = rates[i]* mins[i];
pricemaxs[i] = rates[i]* maxs[i];
}
$(document).ready(function(){
$('#units').keyup(function(){
var units = parseInt($('#units').attr('value'));
var rate = 0;
for(var i = 0; i < mins.length; i++)
{
if(units >= mins[i] && (units <= maxs[i] || maxs[i] == 0)) {
rate = rates[i];
break;
}
}
var amount = units * rate;
if(amount == NaN) amount = 0;
if(rate == 0)
{
$('#amount').attr('value', '--');
$('#price_rate').html('price calculator ( Rate: ? -- )');
}
else {
$('#amount').attr('value', amount.toFixed(2));
$('#price_rate').html('price calculator ( Rate: ?' + rate.toFixed(2) + ' )');
}
});
$('#units').keyup();
/////////////////////////////
$('#amount').keyup(function(){
var amount = parseInt($('#amount').attr('value'));
var rate = 0;
for(var i = 0; i < pricemins.length; i++)
{
if(amount >= pricemins[i] && (amount <= pricemaxs[i] || pricemaxs[i] == 0)) {
rate = rates[i];
break;
}
}
var units = parseInt(amount/rate);
if(units == NaN) units = 0;
if(rate == 0)
{
$('#units').attr('value', '--');
$('#price_rate').html('price calculator ( Rate: ? -- )');
}
else {
$('#units').attr('value', units);
$('#price_rate').html('price calculator ( Rate: ?' + rate.toFixed(2) + ' )');
}
});
$('#amount').keyup();
});
</script>
<label for="amount">Price: </label>
<input name="amount" type="text" id="amount" style="width:100px" />
</html>
【问题讨论】:
-
你还没有描述具体的问题是什么,但跳出来的一件事是
== NaN。您无法将NaN与==进行比较,因为NaN !== NaN。使用amount !== amount或isNaN(amount)。
标签: javascript html forms calculator