为什么我一直在拿NaN?

时间:2014-12-09 10:23:18

标签: javascript jquery html

这些是我的代码。我不知道为什么我一直得到NaN?请帮我解决这个问题。我的文本框值来自一个下拉列表,无论用户选择什么,文本框中都会显示相应的值,这就是我使用value=""的原因我不知道它是否是我错误的部分。请告诉我如何处理这个NaN。

JS

function subtotal(){
        var as = $("#as").val();
        var txt1 = $('#sff').val();
        var txt2 = $('#osf').val();
        var d = 0;
        var e = 0;
        var f = 0;
        var g = 0;

        var a = parseFloat(as, 10);
        var b = parseFloat(txt1, 10);
        var c = parseFloat(txt2, 10);

        if ($('#cbx3').is(":checked")) {
            d = parseFloat($("#cbx3").val(), 10);
        }
        if ($('#cbx4').is(":checked")) {
            e = parseFloat($("#cbx4").val(), 10);
        }
        if ($('#cbx5').is(":checked")) {
            f = parseFloat($("#cbx5").val(), 10);
        }
        if ($('#cbx6').is(":checked")) {
            g = parseFloat($("#cbx6").val(), 10);
        }
        var total = a + b + c + d + e + f + g;

        $('#st').val(total.toFixed(2)); 
        }
function grandtotal(){
var x = document.getElementById("st").value;
var y = document.getElementById("shppng").value;

var sum = parseFloat(x, 10)+ parseFloat(y, 10);
$("#gt").val(sum.toFixed(2));

HTML

<input type="text" id="sff" placeholder="$0.00" value="" style="float:left;"/>
<input type="text" id="osf" placeholder="$0.00" value="" style="float:left;"/>
<select id="as" style="margin: 3px 0 0 55px; width:48%; position: absolute; float: left;">
       <option value="99.00">$99.00/</option>
       <option value="178.20">$178.20</option>
       <option value="241.56">$241.56</option>
       <option value="292.24">$292.24</option>
       <option value="332.80">$332.80</option>
</select>
<input type="checkbox" id="cbx4" value="69.00"/>
<input type="checkbox" id="cbx5" value="35.00"/>
input type="checkbox" id="cbx6" value="39.00"/>

2 个答案:

答案 0 :(得分:3)

指定默认值。

<input type="text" id="sff" placeholder="$0.00" value="0" style="float:left;"/>
<input type="text" id="osf" placeholder="$0.00" value="0" style="float:left;"/>

答案 1 :(得分:0)

abc的值可以为空

&#13;
&#13;
function subtotal() {
  var as = $("#as").val();
  var txt1 = $('#sff').val();
  var txt2 = $('#osf').val();
  var d = 0;
  var e = 0;
  var f = 0;
  var g = 0;

  var a = parseFloat(as, 10) || 0;
  var b = parseFloat(txt1, 10) || 0;
  var c = parseFloat(txt2, 10) || 0;

  if ($('#cbx3').is(":checked")) {
    d = parseFloat($("#cbx3").val(), 10);
  }
  if ($('#cbx4').is(":checked")) {
    e = parseFloat($("#cbx4").val(), 10);
  }
  if ($('#cbx5').is(":checked")) {
    f = parseFloat($("#cbx5").val(), 10);
  }
  if ($('#cbx6').is(":checked")) {
    g = parseFloat($("#cbx6").val(), 10);
  }
  var total = a + b + c + d + e + f + g;

  $('#st').val(total.toFixed(2));
}

function grandtotal() {
  var x = document.getElementById("st").value;
  var y = document.getElementById("shppng").value;

  var sum = parseFloat(x, 10) + parseFloat(y, 10);
  $("#gt").val(sum.toFixed(2));
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" id="sff" placeholder="$0.00" value="" style="float:left;" />
<input type="text" id="osf" placeholder="$0.00" value="" style="float:left;" />
<select id="as">
  <option value="99.00">$99.00/</option>
  <option value="178.20">$178.20</option>
  <option value="241.56">$241.56</option>
  <option value="292.24">$292.24</option>
  <option value="332.80">$332.80</option>
</select>
<input type="checkbox" id="cbx4" value="69.00" />
<input type="checkbox" id="cbx5" value="35.00" />
<input type="checkbox" id="cbx6" value="39.00" />
<br />
<input id="st" />
<input id="gt" />
<br />
<input type="button" value="Total" onclick="subtotal(); grandtotal();" />
&#13;
&#13;
&#13;