2015-07-01 3 views
0

Я пытаюсь выполнить некоторую простую математику, используя функцию ниже. Функция называется onChange:jQuery - Простая математика, возвращающая NaN

var exposure = $('#exposure').find(":selected").val(); 
var budget = $('.budget').val(); 
var ppc = $('.ppc').val(); 
var value = budget/ppc; 
var total2 = Math.floor(value*0.95); 

if(exposure == 2){ 
    var dref = 0.0005; 
}else if(exposure == 3){ 
    var dref = 0.005; 
}else if(exposure == 4){ 
    var dref = 0.001;  
} 

if(exposure > 1){ 
    var add = dref+ppc; 
    var value2 = budget/add; 
    var total2 = Math.floor(value2*0.95); 
} 
$("#sum").text("" + total2 + " Clicks"); 

Моя проблема в том, что если exposure > 1 значение total2 в #sum вернется NaN

Что я делаю неправильно?

+0

Какие возможные значения могут иметь «выдержка»? Если это ничего, кроме 2, 3 или 4, вашей переменной 'dref' не будет присвоено значение, поэтому' add' будет 'Nan', поэтому' value2' будет 'NaN', поэтому' total2' будет «NaN». – nnnnnn

+0

Только 1,2,3 или 4. Я попытался сделать console.log (экспозиция), и значение верное. – oliverbj

+0

Каковы значения 'exposure',' budget' и 'ppc'? – Xymostech

ответ

1

Сделайте parseInt(value,10) для промежуточных звеньев или parseFloat(value) для поплавка.

JavaScript добавляет значения, если тип данных не является числом.

Как:

budget = parseInt(budget,10); 
+0

В каком месте следует добавить это в свой код? Вокруг математических вычислений или? – oliverbj

+0

Для всех переменных – Keerthi

0

Вы должны использовать parseInt или parseFloat. Я бы сказал parseFloat что-то вроде,

var budget = parseFloat($('.budget').val()); 
var ppc = parseFloat($('.ppc').val()); 
var value = parseFloat(budget/ppc); 
var total2 = parseFloat((value*0.95)); 
Смежные вопросы