Primeiro precisamos criar as classes com o padrão visto em aula para indicar quem queremos manipular com o JavaScript. Queremos manipular o contador de cursos, o total de horas e o botão que vai fazer a matrícula do usuário nos cursos. Depois precisamos selecionar esses elementos no arquivo JS e guarda-los em variáveis.
Agora devemos criar a função que vai cuidar da soma dos contadores e também de mostrar essa soma nos respectivos contadores da tabela. Não esquecendo de chamar essa função toda vez que um input é selecionado e a soma só pode acontecer quando o input estiver selecionado.
Crie o arquivo matricula.js
na pasta js
com o seguinte código:
+var $tdTotalCursos = document.querySelector('.js-total-de-cursos')
+var $tdTotalDeHoras = document.querySelector('.js-total-de-horas')
+var $buttonConfirmar = document.querySelector('.js-botao-matricula')
+
+var totalHoras = 0
+var totalCursos = 0
+
+
+function adicionaCurso(checkbox){
+
+ if(checkbox.checked){
+ totalCursos ++
+ totalHoras += parseInt(checkbox.value)
+ }
+ else {
+ totalCursos --
+ totalHoras -= parseInt(checkbox.value)
+ }
+
+ $tdTotalDeHoras.textContent = totalHoras + 'h'
+ $tdTotalCursos.textContent = totalCursos + ' curso(s)'
+
+}
+
+$buttonConfirmar.onclick = confirmaMatriculas
+
+function confirmaMatriculas() {
+ if(totalCursos === 0) {
+ alert('Nenhum curso selecionado')
+ } else {
+ alert('Matricula confirmada nos cursos!')
+ window.location.href = 'index.html'
+ }
+}
No arquivo matricula.html
na pasta raíz do projeto
faça as seguintes alterações:
<!DOCTYPE html>
<html>
<head>
<title>Matriculas</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<link href="css/bootstrap.css" rel="stylesheet">
<link href="css/matricula.css" rel="stylesheet">
<link href="img/favicon.ico" rel="icon">
</head>
<body>
<header class="header">
<nav class="navbar navbar-expand-sm navbar-dark bg-dark">
<a class="navbar-brand" href="index.html"><img class="header-navbar-logo" src="img/musicdot-logo-light.svg" alt="Logo da Musicdot"></a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="#">Cursos</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Matriculas</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">Emails</a>
</li>
</ul>
</div>
</nav>
</header>
<main class="container mb-4">
<div class="jumbotron bg-dark header-matricula text-light mt-3">
<div class="container">
<h1>Escolher cursos</h1>
<p class="lead">Escolha os cursos que gostaria de se matricular</p>
</div>
</div>
<table class="table table-hover rounded-top">
<thead class="thead-dark">
<tr>
<th scope="col"></th>
<th scope="col">Curso</th>
<th scope="col">Tempo</th>
</tr>
</thead>
<tbody>
<tr>
- <̶t̶d̶>̶<̶i̶n̶p̶u̶t̶ t̶y̶p̶e̶=̶"̶c̶h̶e̶c̶k̶b̶o̶x̶"̶ n̶a̶m̶e̶=̶"̶c̶u̶r̶s̶o̶"̶ v̶a̶l̶u̶e̶=̶"̶2̶0̶"̶>̶<̶/̶t̶d̶>̶
+ <td><input onclick="adicionaCurso(this)" type="checkbox" name="curso" value="20"></td>
<td>Curso de Violão</td>
<td>20h</td>
</tr>
<tr>
- <̶t̶d̶>̶<̶i̶n̶p̶u̶t̶ t̶y̶p̶e̶=̶"̶c̶h̶e̶c̶k̶b̶o̶x̶"̶ n̶a̶m̶e̶=̶"̶c̶u̶r̶s̶o̶"̶ v̶a̶l̶u̶e̶=̶"̶3̶0̶"̶>̶<̶/̶t̶d̶>̶
+ <td><input onclick="adicionaCurso(this)" type="checkbox" name="curso" value="30"></td>
<td>Curso de Bambolê</td>
<td>30h</td>
</tr>
<tr>
- <̶t̶d̶>̶<̶i̶n̶p̶u̶t̶ t̶y̶p̶e̶=̶"̶c̶h̶e̶c̶k̶b̶o̶x̶"̶ n̶a̶m̶e̶=̶"̶c̶u̶r̶s̶o̶"̶ v̶a̶l̶u̶e̶=̶"̶1̶2̶"̶>̶<̶/̶t̶d̶>̶
+ <td><input onclick="adicionaCurso(this)" type="checkbox" name="curso" value="12"></td>
<td>Curso de Java</td>
<td>12h</td>
</tr>
<tr>
- <̶t̶d̶>̶<̶i̶n̶p̶u̶t̶ t̶y̶p̶e̶=̶"̶c̶h̶e̶c̶k̶b̶o̶x̶"̶ n̶a̶m̶e̶=̶"̶c̶u̶r̶s̶o̶"̶ v̶a̶l̶u̶e̶=̶"̶2̶0̶"̶>̶<̶/̶t̶d̶>̶
+ <td><input onclick="adicionaCurso(this)" type="checkbox" name="curso" value="20"></td>
<td>Curso de Violão</td>
<td>20h</td>
</tr>
<tr>
- <̶t̶d̶>̶<̶i̶n̶p̶u̶t̶ t̶y̶p̶e̶=̶"̶c̶h̶e̶c̶k̶b̶o̶x̶"̶ n̶a̶m̶e̶=̶"̶c̶u̶r̶s̶o̶"̶ v̶a̶l̶u̶e̶=̶"̶3̶0̶"̶>̶<̶/̶t̶d̶>̶
+ <td><input onclick="adicionaCurso(this)" type="checkbox" name="curso" value="30"></td>
<td>Curso de Bambolê</td>
<td>30h</td>
</tr>
<tr>
- <̶t̶d̶>̶<̶i̶n̶p̶u̶t̶ t̶y̶p̶e̶=̶"̶c̶h̶e̶c̶k̶b̶o̶x̶"̶ n̶a̶m̶e̶=̶"̶c̶u̶r̶s̶o̶"̶ v̶a̶l̶u̶e̶=̶"̶1̶2̶"̶>̶<̶/̶t̶d̶>̶
+ <td><input onclick="adicionaCurso(this)" type="checkbox" name="curso" value="12"></td>
<td>Curso de Java</td>
<td>12h</td>
</tr>
<tr>
- <̶t̶d̶>̶<̶i̶n̶p̶u̶t̶ t̶y̶p̶e̶=̶"̶c̶h̶e̶c̶k̶b̶o̶x̶"̶ n̶a̶m̶e̶=̶"̶c̶u̶r̶s̶o̶"̶ v̶a̶l̶u̶e̶=̶"̶2̶0̶"̶>̶<̶/̶t̶d̶>̶
+ <td><input onclick="adicionaCurso(this)" type="checkbox" name="curso" value="20"></td>
<td>Curso de Violão</td>
<td>20h</td>
</tr>
<tr>
- <̶t̶d̶>̶<̶i̶n̶p̶u̶t̶ t̶y̶p̶e̶=̶"̶c̶h̶e̶c̶k̶b̶o̶x̶"̶ n̶a̶m̶e̶=̶"̶c̶u̶r̶s̶o̶"̶ v̶a̶l̶u̶e̶=̶"̶3̶0̶"̶>̶<̶/̶t̶d̶>̶
+ <td><input onclick="adicionaCurso(this)" type="checkbox" name="curso" value="30"></td>
<td>Curso de Bambolê</td>
<td>30h</td>
</tr>
<tr>
- <̶t̶d̶>̶<̶i̶n̶p̶u̶t̶ t̶y̶p̶e̶=̶"̶c̶h̶e̶c̶k̶b̶o̶x̶"̶ n̶a̶m̶e̶=̶"̶c̶u̶r̶s̶o̶"̶ v̶a̶l̶u̶e̶=̶"̶1̶2̶"̶>̶<̶/̶t̶d̶>̶
+ <td><input onclick="adicionaCurso(this)" type="checkbox" name="curso" value="12"></td>
<td>Curso de Java</td>
<td>12h</td>
</tr>
<tr>
- <̶t̶d̶>̶<̶i̶n̶p̶u̶t̶ t̶y̶p̶e̶=̶"̶c̶h̶e̶c̶k̶b̶o̶x̶"̶ n̶a̶m̶e̶=̶"̶c̶u̶r̶s̶o̶"̶ v̶a̶l̶u̶e̶=̶"̶2̶0̶"̶>̶<̶/̶t̶d̶>̶
+ <td><input onclick="adicionaCurso(this)" type="checkbox" name="curso" value="20"></td>
<td>Curso de Violão</td>
<td>20h</td>
</tr>
<tr>
- <̶t̶d̶>̶<̶i̶n̶p̶u̶t̶ t̶y̶p̶e̶=̶"̶c̶h̶e̶c̶k̶b̶o̶x̶"̶ n̶a̶m̶e̶=̶"̶c̶u̶r̶s̶o̶"̶ v̶a̶l̶u̶e̶=̶"̶3̶0̶"̶>̶<̶/̶t̶d̶>̶
+ <td><input onclick="adicionaCurso(this)" type="checkbox" name="curso" value="30"></td>
<td>Curso de Bambolê</td>
<td>30h</td>
</tr>
<tr>
- <̶t̶d̶>̶<̶i̶n̶p̶u̶t̶ t̶y̶p̶e̶=̶"̶c̶h̶e̶c̶k̶b̶o̶x̶"̶ n̶a̶m̶e̶=̶"̶c̶u̶r̶s̶o̶"̶ v̶a̶l̶u̶e̶=̶"̶1̶2̶"̶>̶<̶/̶t̶d̶>̶
+ <td><input onclick="adicionaCurso(this)" type="checkbox" name="curso" value="12"></td>
<td>Curso de Java</td>
<td>12h</td>
</tr>
<tr class="bg-dark text-light">
<td>Total</td>
<td class="js-total-de-cursos">0 curso(s)</td>
<td class="js-total-de-horas">0h</td>
</tr>
</tbody>
</table>
- <̶b̶u̶t̶t̶o̶n̶ t̶y̶p̶e̶=̶"̶b̶u̶t̶t̶o̶n̶"̶ c̶l̶a̶s̶s̶=̶"̶b̶t̶n̶ b̶t̶n̶-̶o̶u̶t̶l̶i̶n̶e̶-̶d̶a̶r̶k̶ b̶t̶n̶-̶l̶g̶ m̶b̶-̶4̶"̶>̶C̶o̶n̶f̶i̶r̶m̶a̶r̶ M̶a̶t̶r̶í̶c̶u̶l̶a̶<̶/̶b̶u̶t̶t̶o̶n̶>̶
+ <button type="button" class="js-botao-matricula btn btn-outline-dark btn-lg mb-4">Confirmar Matrícula</button>
</main>
<script src="js/jquery.js"></script>
<script src="js/bootstrap.js"></script>
+ <script src="js/matricula.js"></script>
</body>
</html>