Skip to content

Commit 81c66a0

Browse files
committed
add novo exe sobre api dom, conteudo e sobre eventos, alteração de dados, como change, input, cut, copy, paste
1 parent 2ddf05e commit 81c66a0

File tree

1 file changed

+138
-0
lines changed

1 file changed

+138
-0
lines changed
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
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

Comments
 (0)