2016-03-23 2 views
-1

У меня этот базовый калькулятор ниже, и я использую toLocaleString, чтобы добавить разделитель внутри чисел, чтобы он читал проще. Он отлично работает на третьем выходе, но не на первых двух? У меня есть базовые навыки кодирования, так что я не уверен на 100%, как использовать его ...Почему это не работает? (toLocaleString на некоторых выходах)

<form oninput="loanval.value=loan.value.toLocaleString(); periodval.value=period.value.toLocaleString(); paymentval.value=Math.floor(loan.value/period.value).toLocaleString()"> 

<label>Loan Amount</label> 
<input type="range" id="loan" name="loan" min="5000" max="400000" step="5000">    
<output name="loanval" for="loan">0</output> 

<label>Loan Period</label> 
<input type="range" id="period" name="period" min="1" max="15">   
<output name="periodval" for="period">0</output> 

<label>Your monthly repayment will be: 
<output name="paymentval">0</output> 

</form> 

ответ

5

Это потому, что по умолчанию, ваша форма ввода является string и toLocaleString работы по номерам. Таким образом, чтобы изменить его соответствующим образом, вы должны изменить свой loan.value к parseInt(loan.value, 10), как вы можете видеть в этом fiddle

Тем не менее, Math JS функции неявно выполнять преобразование выше для вас, так вот почему ваши последние выходные работает, как ожидалось ,

+0

Благодарим вас за подробный ответ. Теперь я понимаю это лучше и отлично работает :) – Shtarley

+0

Имел ту же «проблему» и не мог узнать, что это было. Totaly не обратил внимания на то, что .value будет строкой. Благодаря ! – Larphoid

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