1+ <!DOCTYPE html>
2+ < html lang ="pt-br ">
3+ < head >
4+ < meta charset ="utf-8 "/>
5+ < meta name ="viewport " content ="width=device-width, initial-scale=1 "/>
6+ < style type ="text/css ">
7+ td select ,
8+ td input {
9+ width : 150px ;
10+ }
11+
12+ # diagram td {
13+ vertical-align : bottom;
14+ text-align : center;
15+ padding : 10px ;
16+ }
17+
18+ # diagram div {
19+ margin : auto;
20+ }
21+ </ style >
22+ </ head >
23+ < body >
24+
25+ < h2 > Calculadora de depósito.</ h2 >
26+
27+ < form name ="calculator ">
28+ < table >
29+ < tr >
30+ < td > Depósito inicial</ td >
31+ < td >
32+ < input name ="money " type ="number " value ="10000 " required />
33+ </ td >
34+ </ tr >
35+ < tr >
36+ < td > Quantos meses?</ td >
37+ < td >
38+ < select name ="months ">
39+ < option value ="3 "> 3 (mínimo)</ option >
40+ < option value ="6 "> 6 (meio ano)</ option >
41+ < option value ="12 " selected > 12 (um ano)</ option >
42+ < option value ="18 "> 18 (1,5 anos)</ option >
43+ < option value ="24 "> 24 (2 anos)</ option >
44+ < option value ="30 "> 30 (2,5 anos)</ option >
45+ < option value ="36 "> 36 (3 anos)</ option >
46+ < option value ="60 "> 60 (5 anos)</ option >
47+ </ select >
48+ </ td >
49+ </ tr >
50+ < tr >
51+ < td > Juros por ano?</ td >
52+ < td >
53+ < input name ="interest " type ="number " value ="5 " required />
54+ </ td >
55+ </ tr >
56+ </ table >
57+ </ form >
58+
59+ < table id ="diagram ">
60+ < tr >
61+ < th > Foi:</ th >
62+ < th > torna-se:</ th >
63+ </ tr >
64+ < tr >
65+ < th id ="money-before "> </ th >
66+ < th id ="money-after "> </ th >
67+ </ tr >
68+ < td >
69+ < div style ="background: red;width:40px;height:100px "> </ div >
70+ </ td >
71+ < td >
72+ < div style ="background: green;width:40px;height:0 " id ="height-after "> </ div >
73+ </ td >
74+ </ table >
75+
76+ < script type ="text/javascript ">
77+ /**
78+ * Crie uma interface que permita inserir uma soma de depósito bancário e percentual e, em seguida, calcule quanto será após determinados períodos de tempo.
79+ *
80+ * Qualquer alteração de entrada deve ser processada imediatamente.
81+ *
82+ * A fórmula é:
83+
84+ //inicial: a soma de dinheiro inicial
85+ //interesse: por exemplo 0,05 significa 5% ao ano
86+ //anos: quantos anos esperar
87+ let result = Math.round(initial * (1 + interest) ** years);
88+ */
89+
90+ let form = document . forms . calculator ;
91+ let moneyElem = form . money ;
92+ let monthsElem = form . months ;
93+ let interestElem = form . interest ;
94+
95+ function calculator ( initial , interest , years ) {
96+ return Math . round ( parseFloat ( initial ) * ( 1 + ( parseFloat ( interest ) / 100 ) ) ** ( parseFloat ( years ) / 12 ) ) ;
97+ }
98+
99+ function getValues ( ) {
100+ return {
101+ money : moneyElem . value ,
102+ months : monthsElem . value ,
103+ interest : interestElem . value
104+ } ;
105+ }
106+
107+ function setValuesInterface ( valueMoneyBefore , valueMoneyAfter ) {
108+ let moneyBeforeElem = document . querySelector ( "#money-before" ) ;
109+ moneyBeforeElem . textContent = valueMoneyBefore ;
110+ let moneyAfterElem = document . querySelector ( "#money-after" ) ;
111+ moneyAfterElem . textContent = valueMoneyAfter ;
112+ let diference = valueMoneyAfter - valueMoneyBefore ;
113+ if ( diference === 0 ) {
114+ return ;
115+ } else {
116+ let difHeight = diference / ( valueMoneyBefore / 100 ) ;
117+ document . querySelector ( "#height-after" ) . style . height = 100 + difHeight + "px" ;
118+ }
119+
120+ }
121+
122+ function handlerCalculator ( event ) {
123+ let values = getValues ( ) ;
124+ if ( event . target . name === moneyElem . name || event . target . name === monthsElem . name || event . target . name === interestElem . name ) {
125+ let valueAfter = calculator ( values . money , values . interest , values . months ) ;
126+ setValuesInterface ( values . money , valueAfter ) ;
127+ return ;
128+ }
129+ }
130+
131+ form . addEventListener ( "input" , handlerCalculator ) ;
132+
133+
134+
135+
136+ </ script >
137+ </ body >
138+ </ html >
0 commit comments