계속 Nan
이 계속 발생하고 코드에 누락 된 부분이 있습니까? 내가 가지고있는 값은 순수 부동 소수점 숫자입니다 (예 : 79.00, 12.00 등). 이전에이 코드의 긴 버전을 작성했는데 올바른 대답을 얻었지만이 짧은 코드로 변경하면 코드의 NaN
값은 부동 소수이지만 여전히 'NaN`
긴 버전 현재
function tblcheckboxes(){
var a, b, c ... v = 0;
if ($('#tcbx1').is(":checked")) {
a = parseFloat($("#tcbx1").val(), 10);
}
if ($('#tcbx2').is(":checked")) {
b = parseFloat($("#tcbx2").val(), 10);
}
if ($('#tcbx3').is(":checked")) {
c = parseFloat($("#tcbx3").val(), 10);
}
...
...
...
if ($('#tcbx23').is(":checked")) {
v = parseFloat($("#tcbx23").val(), 10);
}
var total = a + b + c ... + v;
$('.txt7').val(total.toFixed(2));
}
$(document).ready(function(){
$('#tcbx1').click(function(){
tblcheckboxes();
});
$('#tcbx2').click(function(){
tblcheckboxes();
});
$('#tcbx3').click(function(){
tblcheckboxes();
});
...
...
...
$('#tcbx23').click(function(){
tblcheckboxes();
});
});
코드
function tblcheckboxes() {
var a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v = 0;
var vars = [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v]; // store in an array for easier access
var total = 0; // initialize total so it can be added while looping through the elements
for(var x = 1; x <= 23; x++) {
if($("#tcbx" + x).is(":checked")) {
vars[x - 1] = parseFloat($("#tcbx" + x).val(), 10);
}
total = parseFloat($(total).val(), 10) + vars[x - 1];
}
$(".txt7").val(total.toFixed(2));
}
$(document).ready(function() {
for(var i = 1; i <= 23; i++) {
$("#tcbx" + i).click(function() {
tblcheckboxes();
grandtotal();
});
}
});
$(":checkbox").on("change", function() {
//change input #grandtotal value according check/uncheck checkboxes
$(".txt7").val(function() {
//declare a variable to keep the sum of the values
var sum = 0;
//using an iterator find and sum the values of checked checkboxes
$(":checkbox:checked").each(function() {
sum = parseFloat($(sum).val(), 10) + parseFloat(~~$(this).val(), 10);
});
return sum;
});
});
//here change the value according on checked checkboxes on DOM ready event
$(".txt7").val(function() {
var sum = 0;
$(":checkbox:checked").each(function() {
sum = parseFloat($(sum).val(), 10) + parseFloat(~~$(this).val(), 10);
});
return sum;
});
당신은 당신의 HTML을 게시 할 수 있습니까? 또는 바이올린에서 다시 만드십시오? – jmore009
'a','b','c'는'undefined'로 시작하고 모든 if 문이 실행되지 않으면 적어도 하나는'undefined'가됩니다. 'undefined '를 추가하면'NaN'이 생성됩니다. –
@ AlexanderO'Mara의 의견을 확장하려면 각 var에 개별적으로 값을 할당해야합니다. 귀하의 예제에서'v == 0' –