Prática JavaExemplos de scripts com código-fonte Code
⚡ Resumo Inteligente
Prática Code Exemplos usando JavaEste script demonstra como loops, validação de formulários e eventos resolvem tarefas comuns em navegadores. O artigo apresenta um gerador de tabuada, um validador completo de formulários de cadastro, um pop-up acionado ao passar o mouse, um relógio digital em tempo real e as práticas que garantem a confiabilidade desses scripts.

O que você vai construir nestes JavaExemplos de roteiro
Cada exemplo abaixo é uma página HTML completa que funciona em qualquer navegador sem a necessidade de compilação ou biblioteca externa. Juntos, eles abrangem as três habilidades presentes em quase todos os scripts de navegador: gerar marcação a partir de dados, validar a entrada do usuário e reagir a eventos.
| Exemplo | Conceito Praticado | Principais métodos utilizados |
|---|---|---|
| Tabela de multiplicação | Laços aninhados e construção de strings | prompt, for, while, document.write |
| Validação de formulário | Matrizes, condições e atualizações do DOM | getElementById, indexOf, lastIndexOf, innerHTML |
| Mensagem pop-up | Manipulação de eventos | adicionar ouvinte de eventos, alerta |
| Digirelógio tal | Temporizadores e formatação de datas | setInterval, Data, padStart, textContent |
Familiaridade básica com JavaScript A sintaxe é assumida. Se você ainda não está familiarizado com loops, leia como usar loops em JavaScript Antes de começar.
Exemplo 1: JavaTabela de multiplicação de scripts
Crie uma tabela de multiplicação simples, solicitando ao usuário o número de linhas e colunas.
Solução:
<html>
<head>
<title>Multiplication Table</title>
<script type="text/javascript">
var rows = prompt("How many rows for your multiplication table?");
var cols = prompt("How many columns for your multiplication table?");
if(rows == "" || rows == null)
rows = 10;
if(cols== "" || cols== null)
cols = 10;
createTable(rows, cols);
function createTable(rows, cols)
{
var j=1;
var output = "<table border='1' width='500' cellspacing='0' cellpadding='5'>";
for(i=1;i<=rows;i++)
{
output = output + "<tr>";
while(j<=cols)
{
output = output + "<td>" + i*j + "</td>";
j = j+1;
}
output = output + "</tr>";
j = 1;
}
output = output + "</table>";
document.write(output);
}
</script>
</head>
<body>
</body>
</html>
Saída (3 linhas e 4 colunas):
1 2 3 4 2 4 6 8 3 6 9 12
Code explicação: O laço externo `for` cria uma linha da tabela por iteração, enquanto o laço interno `while` preenche essa linha com uma célula por coluna. O contador j O valor é redefinido para 1 após cada linha, etapa que a maioria dos iniciantes esquece. Sem essa redefinição, apenas a primeira linha conteria células.
💡 Dica: A função prompt sempre retorna uma string. A expressão i*j funciona porque JavaO script converte ambos os operandos em números para multiplicação, mas uma comparação como rows > 5 compararia o texto. Envolva a entrada em Number() quando o valor é usado tanto para aritmética quanto para comparação.
Exemplo nº 2: Exemplo de formulários JS
Crie um formulário de exemplo que colete do usuário o nome, sobrenome, e-mail, ID do usuário, senha e confirmação de senha. Todos os campos são obrigatórios e o endereço de e-mail deve estar no formato correto. Além disso, os valores inseridos nos campos de senha e confirmação de senha devem ser idênticos. Após a validação, utilize JavaScriptExiba mensagens de erro apropriadas em vermelho, logo ao lado da caixa de texto onde ocorreu o erro.
Solução com Fonte Code:
<html>
<head>
<title>Form Validation</title>
<script type="text/javascript">
var divs = new Array();
divs[0] = "errFirst";
divs[1] = "errLast";
divs[2] = "errEmail";
divs[3] = "errUid";
divs[4] = "errPassword";
divs[5] = "errConfirm";
function validate()
{
var inputs = new Array();
inputs[0] = document.getElementById('first').value;
inputs[1] = document.getElementById('last').value;
inputs[2] = document.getElementById('email').value;
inputs[3] = document.getElementById('uid').value;
inputs[4] = document.getElementById('password').value;
inputs[5] = document.getElementById('confirm').value;
var errors = new Array();
errors[0] = "<span style='color:red'>Please enter your first name!</span>";
errors[1] = "<span style='color:red'>Please enter your last name!</span>";
errors[2] = "<span style='color:red'>Please enter your email!</span>";
errors[3] = "<span style='color:red'>Please enter your user id!</span>";
errors[4] = "<span style='color:red'>Please enter your password!</span>";
errors[5] = "<span style='color:red'>Please confirm your password!</span>";
for (i in inputs)
{
var errMessage = errors[i];
var div = divs[i];
if (inputs[i] == "")
document.getElementById(div).innerHTML = errMessage;
else if (i==2)
{
var atpos=inputs[i].indexOf("@");
var dotpos=inputs[i].lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=inputs[i].length)
document.getElementById('errEmail').innerHTML = "<span style='color: red'>Enter a valid email address!</span>";
else
document.getElementById(div).innerHTML = "OK!";
}
else if (i==5)
{
var first = document.getElementById('password').value;
var second = document.getElementById('confirm').value;
if (second != first)
document.getElementById('errConfirm').innerHTML = "<span style='color: red'>Your passwords don't match!</span>";
else
document.getElementById(div).innerHTML = "OK!";
}
else
document.getElementById(div).innerHTML = "OK!";
}
}
function finalValidate()
{
var count = 0;
for(i=0;i<6;i++)
{
var div = divs[i];
if(document.getElementById(div).innerHTML == "OK!")
count = count + 1;
}
if(count == 6)
document.getElementById("errFinal").innerHTML = "All the data you entered is correct!!!";
}
</script>
</head>
<body>
<table id="table1">
<tr>
<td>First Name:</td>
<td><input type="text" id="first" onkeyup="validate();" /></td>
<td><div id="errFirst"></div></td>
</tr>
<tr>
<td>Last Name:</td>
<td><input type="text" id="last" onkeyup="validate();"/></td>
<td><div id="errLast"></div></td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" id="email" onkeyup="validate();"/></td>
<td><div id="errEmail"></div></td>
</tr>
<tr>
<td>User Id:</td>
<td><input type="text" id="uid" onkeyup="validate();"/></td>
<td><div id="errUid"></div></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" id="password" onkeyup="validate();"/></td>
<td><div id="errPassword"></div></td>
</tr>
<tr>
<td>Confirm Password:</td>
<td><input type="password" id="confirm" onkeyup="validate();"/></td>
<td><div id="errConfirm"></div></td>
</tr>
<tr>
<td><input type="button" id="create" value="Create" onclick="validate();finalValidate();"/></td>
<td><div id="errFinal"></div></td>
</tr>
</table>
</body>
</html>
Comportamento esperado:
Empty first name -> Please enter your first name! Email "ann@site" -> Enter a valid email address! Email "ann@site.com" -> OK! Passwords differ -> Your passwords don't match! All six fields valid -> All the data you entered is correct!!!
Code explicação: Três arrays funcionam em paralelo. inputs Contém os valores atuais, erros contém as mensagens correspondentes, e divs Contém o ID do contêiner que exibe cada mensagem. O índice, portanto, vincula um campo, seu texto de erro e seu local de saída. O ramo de e-mail aceita um endereço somente quando o símbolo @ não é o primeiro caractere e quando pelo menos dois caracteres separam o símbolo @ do ponto final.
⚠️ Aviso: A validação no lado do cliente melhora a experiência do usuário, mas não oferece segurança. Qualquer pessoa pode desativá-la. JavaCrie um script ou envie uma requisição POST diretamente para o endpoint, portanto, cada regra mostrada aqui deve ser repetida no servidor.
Exemplo nº 3: Mensagem POP-UP usando Evento
Exiba uma mensagem simples como "Bem-vindo(a)!!!" na sua página de demonstração e, quando o usuário passar o cursor sobre a mensagem, uma janela pop-up deverá ser exibida com a mensagem "Bem-vindo(a) à minha página web!!!".
Solução:
<html> <head> <title>Event!!!</title> <script type="text/javascript"> function trigger() { document.getElementById("hover").addEventListener("mouseover", popup); function popup() { alert("Welcome to my WebPage!!!"); } } </script> <style> p{ font-size: 50px; position: fixed; left: 550px; top: 300px; } </style> </head> <body onload="trigger();"> <p id="hover">Welcome!!!</p> </body> </html>
Comportamento esperado:
Page loads -> the text "Welcome!!!" appears in large type Mouse hovers -> an alert box shows "Welcome to my WebPage!!!"
Code explicação: O ouvinte está anexado dentro da função de gatilho, que é executada no evento onload do corpo. Aguardar o carregamento é importante, pois o parágrafo com o id “hover” não existe enquanto o cabeçalho ainda está sendo analisado. O mesmo resultado é obtido de forma mais elegante colocando o script logo antes da tag de fechamento do corpo ou adicionando o atributo defer.
Exemplo nº 4: Ao vivo DigiRelógio tal usando setInterval
Exiba a hora atual na página e atualize-a a cada segundo. Este exemplo introduz temporizadores e mostra a alternativa moderna ao document.write.
<html> <head> <title>Digital Clock</title> </head> <body> <h2 id="clock">--:--:--</h2> <script> function showTime() { const now = new Date(); const hh = String(now.getHours()).padStart(2, "0"); const mm = String(now.getMinutes()).padStart(2, "0"); const ss = String(now.getSeconds()).padStart(2, "0"); // textContent is safer than innerHTML for plain text document.getElementById("clock").textContent = hh + ":" + mm + ":" + ss; } showTime(); // draw immediately setInterval(showTime, 1000); // then refresh every second </script> </body> </html>
Comportamento esperado:
09:05:07 09:05:08 09:05:09 (the heading updates in place once per second)
Chamar `showTime` uma vez antes de `setInterval` evita um atraso visível de um segundo quando a página é aberta. Use `clearInterval` com o valor retornado por `setInterval` quando o relógio precisar parar.
Melhores práticas para escrever estes JavaExemplos de roteiro
Os três exemplos originais datam de um estilo anterior de JavaRoteiro. A lista abaixo mostra o que deve ser alterado ao adaptá-los para o trabalho de produção.
- Substitua document.write: Ao ser chamado após o carregamento da página, ele apaga todo o documento. Em vez disso, crie um elemento e defina o conteúdo do texto ou adicione um nó.
- Declare todas as variáveis: Use `let` e `const` em vez de depender de variáveis globais implícitas, como o contador.
inos loops acima. - Prefira textContent a innerHTML: Inserir texto fornecido pelo usuário com innerHTML abre uma brecha de segurança para ataques de cross-site scripting.
- Remova os manipuladores da marcação: Substitua os atributos onkeyup e onclick por addEventListener, o que mantém o comportamento separado da estrutura.
- Converter entrada de prompt: Envolva os valores em Number() antes de usá-los em comparações, já que prompt sempre retorna uma string.
- Valide novamente no servidor: Considere as verificações do navegador apenas como uma camada de conveniência.
Para aprofundar esses exemplos, revise JavaMétodos de matriz de script para os arrays paralelos usados no validador de formulários, JavaCadeias de script para as verificações de posição de e-mail, e cookies em JavaScript Para lembrar os valores inseridos por um visitante. Decida onde o script finalizado deve ser inserido, lendo interno e externo JavaScript.
