2013-06-18 3 views
1

Я использую следующие коды:Javascript дает NaN ошибку

<script type="text/javascript"> 
function minus(){ 
var t=document.getElementById("totalcost").value; 
var u=document.getElementById("advpay").value; 
var set=(t-u); 
document.getElementById("textfield").value=set; 
return true; 
} 
</script> 

Я вошел "6000" в качестве значения в TotalCost поле ид и "1000" в advpay поле идентификатора. поэтому в TextField ид поле, он должен показать 5000 (6000-1000), но он дает ответ, как NaN. где ошибка?

ответ

5
<script type="text/javascript"> 
function minus() { 
    var t = parseInt(document.getElementById("totalcost").value, 10), 
     u = parseInt(document.getElementById("advpay").value, 10), 
     set = (t - u); 
    document.getElementById("textfield").value = set; 
    return true; 
} 
</script> 

Это происходит потому, что вы пытаетесь вычесть две строки! value возвращает строку ввода, вам нужно разобрать ее на число, чтобы вычесть их. Не забудьте указать radix parseInt, в противном случае число может быть проанализировано не как десятичное. См. this answer для получения более подробной информации.

+0

«Не забудьте указать radix parseInt, в противном случае число будет анализироваться как восьмеричное. " Я так не думаю ... – Jonathan

+0

Вы правы, он не будет анализироваться как восьмеричный, он будет разбираться в основном на самом номере. –

+0

"_... иначе число будет анализироваться как восьмеричное **, если оно начинается с нуля. **" – jahroy

0

NaN сокращенно не номер. NaN будет результатом любого вычисления, которое содержит что-либо, а не число (строки, булев, объект). В вашем случае расчеты были сделаны с использованием 2 строк, вот почему он вернул NaN. Перед выполнением вычислений вы должны указать свои значения в число.

Вы можете привести свои значения, используя следующий фрагмент кода:

Пример 1:

var t = +document.getElementById("totalcost").value; 
u = +document.getElementById("advpay").value; 

Пример 2 (Как было предложено @LightStyle):

var t = parseInt(document.getElementById("totalcost").value, 10), 
u = parseInt(document.getElementById("advpay").value, 10), 
Смежные вопросы