2015-06-14 6 views
1

Обновленный код. calculate() все еще не работает. Ежемесячная сумма платежа в конечном счете не передается в поле «total» id. Кто-нибудь видит, что основная проблема здесь? Мой синтаксис кажется правильным, я считаю, что может возникнуть проблема с моей спецификацией того, где каждая переменная применяется в коде.Неспособность рассчитать общий ежемесячный платеж за автомобиль. Что случилось?

У меня возникли проблемы с получением функции calculate(), чтобы передать правильный результат в «total». Любые возможные решения? Действие щелчка на кнопке расчета должно отображать общее количество, но ничего не отображает вообще, как если бы кнопка вообще не активировала функцию вычисления.

<!DOCTYPE html> 
<html> 
<head> 
    <script type="text/javascript"> 
function calculate() { 
var P = document.getElementById("price").value; 
var D = document.getElementById("DP").value; 
var R = document.getElementById("R").value; 
var N = document.getElementById("N").value; 
var i = (R/1200); 
var n = (N * 12); 
var m = ((P - D) * i * Math.pow(1 + i,n))/(Math.pow(1 + i,n) - 1); 
var result = document.getElementById('total'); 
    result.value = m;} 
</script> 
</head> 
<div align="center"> 
    <hr> 
    <form name id="Main"> 
     <input type="number" id="price" placeholder="Price of the Car"/> 
     <br> 
     <br> 
     <input type="number" id="DP" placeholder="Down Payment"/> 
     <br> 
     <br> 
     <input type="number" id="R" placeholder="Annual % Rate"/> 
     <br> 
     <br> 
     <input type="number" id="N" placeholder="# of Years Loaned"/> 
     <br> 
     <br> 
     <input type="button" id="calculate" value="Calculate" onclick="javascript:calculate();"/> 
     <br> 
     <br> 
     <input type="number" id="total" placeholder="Total Cost..." readonly=""/> 
     <br> 
     <br> 
     <input type="reset" value="Reset"> 
    </form> 
    <hr> 
</div> 
</html> 
+0

Я думал, что '

+0

Нет, это не так. Но он не предназначен для макета представления, просто для разрыва строки текста. Многие люди все еще используют его, и это нормально для быстрого теста или что-то в этом роде, но для макета вы должны использовать свойства css, расположение div и т. Д. См. Http://www.w3schools.com/tags/tag_br.asp – jotadepicas

+1

@ user9018 Вопрос был отредактирован, чтобы содержать правильный код, он не поможет никому другому с той же проблемой. Пожалуйста, подумайте над редактированием вопроса, чтобы ответы соответствовали вашему вопросу. –

ответ

0
<!DOCTYPE html> 
<html> 
<head> 
<script type="text/javascript"> 
function calculate() { 
    var P = document.getElementById("price").value; 
    var D = document.getElementById("DP").value; 
    var R = document.getElementById("R").value; 
    var N = document.getElementById("N").value; 
    var i = (R/1200); 
    var n = (N * 12); 
    var m = ((P - D) * i * Math.pow(1 + i,n))/(Math.pow(1 + i,n) - 1); 
    var result = document.getElementById('total'); 
     result.value = m;} 
</script> 
</head> 
<div align="center"> 
<hr/> 
<form id="Main"> 
    <input type="number" id="price" placeholder="Price of the Car" /> 
    <br /> 
    <br/> 
    <input type="number" id="DP" placeholder="Down Payment" /> 
    <br/> 
    <br/> 
    <input type="number" id="R" placeholder="Annual % Rate" /> 
    <br/> 
    <br/> 
    <input type="number" id="N" placeholder="# of Years Loaned" /> 
    <br/> 
    <br/> 
    <input type="button" value="Calculate Monthly Payment" onclick="calculate();" /> 
    <br/> 
    <br/> 
    Total Monthly Payment:<input type="number" id="total" placeholder="Total Cost..." readonly="" /> 
    <br/> 
    <br/> 
    <input type="reset" value="Reset" /> 
</form> 
<hr/> 
</div> 
3

Используйте вместо этого функцию Math.pow(). Оператор^не предназначен для математических операций с энергией (см. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Bitwise_XOR и https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/pow).

Кроме того, это result.value = m, а не наоборот :)

Также 2: R и M кажутся неопределенными мне, вы должны инициализировать эти переменные с чем-то, как вы сделали с P и D.

Также 3: используйте инструменты chrome dev или что-нибудь в этом роде. Это сделает вашу жизнь намного проще. Помните, что javascript не означает «no IDE»: D

+0

Как применить это к переменной, скажем n? – lizardwizard

+0

Нет проблем, просто Math.pow (123, n), например. Вы можете использовать n в качестве аргумента для любого вызова функции, включая pow. Имейте в виду, что это функциональное программирование, поэтому 2^3 становится Math.pow (2,3). Видеть? – jotadepicas

+0

Начиная понимать, я никогда не сталкивался с надстрочными индексами в функции. Таким образом, в этом случае var m = ((P - D) * i * (1 + i)^n)/((1 + i)^n - 1); ... как использовать Math.pow (x, n) для создания правильной функции? – lizardwizard

3

К сожалению, ваш исходный код никогда не будет работать, так как в нем слишком много ошибок.
Вот исправленная скрипка для вас, пожалуйста, см: http://jsfiddle.net/q330fqw8/

function calculate() { 
    var P = document.getElementById("price").value; 
    var D = document.getElementById("DP").value; 
    var R = document.getElementById("R").value; 
    var N = document.getElementById("N").value; 
    var i = (R/1200); 
    var n = (N * 12); 
    var m = ((P - D) * i * Math.pow(1 + i,n))/(Math.pow(1 + i,n) - 1); 
    var result = document.getElementById('total'); 
    result.value = m; 
} 

Я удалил id="calculate" в HTML, из-за этого: Why JS function name conflicts with element ID?
В JavaScript, 4 переменных P, D, R, N должен быть установлен правильно. Наконец, это m.value = result; ->result.value = m;
, но я думаю, вы уже исправили некоторые ошибки в вопросе. Я работал с вашим исходным кодом.

+3

Я думаю, что это было бы более учебным для плаката, если вы перечислите все исправления, которые вы сделали с кодом, чем просто сказать «у него слишком много ошибок». Однако я подтвердил ваш ответ. – jotadepicas

+1

@vitr Вы - святой, спасибо! Любопытно, однако, каковы были критические ошибки, которые мешали отображению результата? Я хотел бы знать, чтобы самообразоваться. Еще раз спасибо, кстати. – lizardwizard

+0

полностью согласен, надеюсь, он будет проходить по строкам, так как все есть довольно простой материал – vitr