兄弟,看不懂你的判断逻辑。
for (var i=0;i<resultObj.length;i++)
sum += (resultObj.value==""?0:parseFloat(resultObj.value));
document.getElementById("prod_sum").value = sum ;
if (sum >= 2000 || sum <= 3000) //如果合计大于等于2000或小于等于3000
document.getElementById("prod_discount").value = "0.8"; //则折数字段显示8折
else (if sum >= 3001) //如果合计大于等于3001
document.getElementById("prod_discount").value = "0.7"; //则折数字段显示7折
else //否则
document.getElementById("prod_discount").value = "0.9"; //折数字段显示9折
if (sum <= 1200) //如果合计小于等于1200
document.getElementById("prod_ship").value = "75"; //则运费字段显示75元
else (if sum >= 1201 || sum <= 1500) //如果合计大于等于1201或合计小于等于1500
document.getElementById("prod_ship").value = "100";//运费字段显示100元
else //否则
document.getElementById("prod_ship").value = "0";//运费字段显示0元
写错了吧?||是不是应该为 && 呀?
for (var i=0;i<resultObj.length;i++)
sum += (resultObj.value==""?0:parseFloat(resultObj.value));
document.getElementById("prod_sum").value = sum ;
if (sum >= 2000 || sum <= 3000) //如果合计大于等于2000或小于等于3000
document.getElementById("prod_discount").value = "0.8"; //则折数字段显示8折
else (if sum >= 3001) //如果合计大于等于3001
document.getElementById("prod_discount").value = "0.7"; //则折数字段显示7折
else //否则
document.getElementById("prod_discount").value = "0.9"; //折数字段显示9折
if (sum <= 1200) //如果合计小于等于1200
document.getElementById("prod_ship").value = "75"; //则运费字段显示75元
else (if sum >= 1201 || sum <= 1500) //如果合计大于等于1201或合计小于等于1500
document.getElementById("prod_ship").value = "100";//运费字段显示100元
else //否则
document.getElementById("prod_ship").value = "0";//运费字段显示0元
写错了吧?||是不是应该为 && 呀?
sum += (resultObj.value==""?0:parseFloat(resultObj.value));
document.getElementById("prod_sum").value = sum ;
if (sum >= 2000&&sum <= 3000){document.getElementById("prod_discount").value = "0.8";} //如果合计大于等于2000和小于等于3000则折数字段显示8折
else if(sum >= 3001){document.getElementById("prod_discount").value = "0.7";} //如果合计大于等于3001则折数字段显示7折
else{ document.getElementById("prod_discount").value = "0.9";} //否则折数字段显示9折
//这里也是一样,自己改改吧
if (sum <= 1200) //如果合计小于等于1200
document.getElementById("prod_ship").value = "75"; //则运费字段显示75元
else (if sum >= 1201 || sum <= 1500) //如果合计大于等于1201或合计小于等于1500
document.getElementById("prod_ship").value = "100";//运费字段显示100元
else //否则
document.getElementById("prod_ship").value = "0";//运费字段显示0元
}
document.getElementById("prod_discount").value = "0.8"; //则折数字段显示8折
else (if sum >= 3001) //如果合计大于等于3001
document.getElementById("prod_discount").value = "0.7"; //则折数字段显示7折
else //否则
document.getElementById("prod_discount").value = "0.9"; //折数字段显示9折
if (sum <= 1200) //如果合计小于等于1200
document.getElementById("prod_ship").value = "75"; //则运费字段显示75元
else (if sum >= 1201 || sum <= 1500) //如果合计大于等于1201或合计小于等于1500
document.getElementById("prod_ship").value = "100";//运费字段显示100元
else //否则
document.getElementById("prod_ship").value = "0";//运费字段显示0元
红色是明显的基础错误
目前已更改如下
但还有错误是总计的地方
我该如何用 JavaScript 的变量去纪录值,而不是直接用 <input> 的 value 去纪录值,这样似乎变量型态没有处理好的话会有错误。例如 prod_discount 和 prod_ship 该如何先纪录在 JavaScript 变量中,等全部运算完成后,再一次设值到 <input> 内。
目前的做法当我再次取出 document.getElementById("prod_ship").value 时会变成字符串,和前面的值相加后,也是字符串,而且刚好在小数点后面,这样经过四舍五入后,会造成没有加到运费的错觉...
<script type="text/javascript">
function cal(obj) {
var t = obj.parentNode.getElementsByTagName("input");
t[2].value = (t[0].value==""?0:parseFloat(t[0].value)) * (t[1].value==""?0:parseFloat(t[1].value));
var resultObj = document.getElementsByName("result");
var sum = 0;
for (var i=0;i<resultObj.length;i++)
sum += (resultObj[i].value==""?0:parseFloat(resultObj[i].value));
document.getElementById("prod_sum").value = sum;
if (sum >= 2000 && sum <= 3000) //如果合计大于等于2000并小于等于3000
document.getElementById("prod_discount").value = "0.8"; //则折数字段显示8折
else if (sum >= 3001) //如果合计大于等于3001
document.getElementById("prod_discount").value = "0.7"; //则折数字段显示7折
else //否则
document.getElementById("prod_discount").value = "0.9"; //折数字段显示9折
if (sum <= 1200) //如果合计小于等于1200
document.getElementById("prod_ship").value = "75"; //则运费字段显示75元
else if (sum >= 1201 && sum <= 1500) //如果合计大于等于1201并小于等于1500
document.getElementById("prod_ship").value = "100";//运费字段显示100元
else //否则
document.getElementById("prod_ship").value = "0";//运费字段显示0元
var total = 0;
total = Math.round(sum * (document.getElementById("prod_discount").value) + (document.getElementById("prod_ship").value)) ;
document.getElementById("prod_total").value = total;
}
可以了
上方這兩種有什麼區別嗎
哪種比較建議呢
规范就用parseFloat()
都是有字符串强制转换为数字的意思,呵呵
直接转化
parseFloat还得考虑进制问题