2014-12-09 6 views
2

Это мои коды. Я не знаю, почему я продолжаю получать NaN? Пожалуйста, помогите мне в этом. Мое значение текстового поля выводится из раскрывающегося списка, что независимо от того, что пользователь выбирает, соответствующее соответствующее значение появится в текстовом поле, поэтому я использовал value="". Я не знаю, является ли его частью, в которой я ошибался. Скажите, пожалуйста, как бороться с этим NaN.Почему я продолжаю получать 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"/> 
+0

Добавление [jsFidlle] (http://jsfiddle.net/) поможет много , – Kiril

+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;"/> 
+0

все еще не работает. – Jennifer

+0

Если это не так, пожалуйста, предоставьте больше html-кода в своем вопросе, но я уверен, что ошибка заключается в том, что вы читаете текстовое значение, а не num. Возможно, вы объединили символ и значение и попытаетесь преобразовать значение позже, поэтому – dotnetstep

+0

Я пытаюсь преобразовать этот текст в float. – Jennifer

0

Значение a, b или c может быть пустой, так что

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)); 
 
}
<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();" />

Смежные вопросы