兄弟,看不懂你的判断逻辑。
        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元
写错了吧?||是不是应该为 && 呀?

解决方案 »

  1.   

    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){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元 

    }
      

  2.   

    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元
    红色是明显的基础错误
      

  3.   

    感谢各位前辈
    目前已更改如下
    但还有错误是总计的地方
    我该如何用 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;
    }
      

  4.   

    total = Math.round(sum * ((document.getElementById("prod_discount").value)*1) + ((document.getElementById("prod_ship").value)*1)) ;或者:total = Math.round(sum * (parseFloat(document.getElementById("prod_discount").value)) + parseFloat((document.getElementById("prod_ship").value))) ;
      

  5.   

    謝謝toury
    可以了
    上方這兩種有什麼區別嗎
    哪種比較建議呢
      

  6.   

    偷懒就用 ()*1
    规范就用parseFloat()
    都是有字符串强制转换为数字的意思,呵呵
      

  7.   

    最简单的办法就是+str
    直接转化
    parseFloat还得考虑进制问题