Praktisk JavaScripteksempler med kildekode Code
⚡ Smart opsummering
Praktisk Code Eksempler ved brug af JavaScriptet demonstrerer, hvordan løkker, formularvalidering og hændelser løser hverdagens browseropgaver. Denne artikel præsenterer en multiplikationstabelgenerator, en komplet registreringsformularvalidering, en popup-popup, der udløses ved at holde musen over den, et live digitalt ur og de fremgangsmåder, der sikrer, at sådanne scripts er pålidelige.
Hvad du vil bygge i disse JavaScripteksempler
Hvert eksempel nedenfor er en komplet HTML-side, der kører i enhver browser uden et byggetrin eller et eksternt bibliotek. Sammen dækker de de tre færdigheder, der optræder i næsten alle browserscripts: generering af markup fra data, validering af brugerinput og reaktion på hændelser.
| Eksempel | Koncept øvet | Nøglemetoder anvendt |
|---|---|---|
| Multiplikationstabel | Indlejrede løkker og strengopbygning | prompt, for, mens, dokument.skriv |
| Formularvalidering | Arrays, betingelser og DOM-opdateringer | getElementById, indexOf, lastIndexOf, innerHTML |
| Popup-besked | Begivenhedshåndtering | addEventListener, alarm |
| Digital ur | Timere og datoformatering | setInterval, Date, padStart, textContent |
Grundlæggende kendskab til JavaScript syntaks antages. Hvis løkker stadig ikke er kendte, læs hvordan man bruger løkker i JavaScript før start.
Eksempel #1: JavaScript multiplikationstabel
Lav en simpel multiplikationstabel, hvor brugeren bliver bedt om antallet af rækker og kolonner.
Opløsning:
<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>
Output (3 rækker og 4 kolonner):
1 2 3 4 2 4 6 8 3 6 9 12
Code forklaring: Den ydre for-løkke opretter én tabelrække pr. iteration, mens den indre while-løkke udfylder rækken med én celle pr. kolonne. Tælleren j nulstilles til 1 efter hver række, hvilket er det trin, de fleste begyndere glemmer. Uden denne nulstilling ville kun den første række indeholde celler.
💡 Tip: Promptfunktionen returnerer altid en streng. Udtrykket i*j virker fordi JavaScriptet konverterer begge operander til tal til multiplikation, men en sammenligning som f.eks. rows > 5 ville sammenligne tekst. Ombryd inputtet i Number() når værdien bruges til både aritmetik og sammenligning.
Eksempel nr. 2: Eksempel på JS Forms
Opret et eksempel på et formularprogram, der indsamler fornavn, efternavn, e-mail, bruger-id, adgangskode og bekræftelse af adgangskode fra brugeren. Alle input er obligatoriske, og den indtastede e-mailadresse skal være i det korrekte format. De indtastede værdier i tekstfelterne "adgangskode" og "bekræft adgangskode" skal også være de samme. Efter validering ved hjælp af JavaScript, vis korrekte fejlmeddelelser med rødt lige ved siden af den tekstboks, hvor der er en fejl.
Løsning med kilde 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>
Forventet adfærd:
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 forklaring: Tre arrays kører parallelt. indgange holder de nuværende værdier, fejl indeholder de matchende beskeder, og divs indeholder id'et for den container, der viser hver besked. Indekset linker derfor et felt, dets fejltekst og dets outputplacering. E-mail-grenen accepterer kun en adresse, når at-tegnet ikke er det første tegn, og når mindst to tegn adskiller at-tegnet fra det sidste punktum.
⚠️ Advarsel: Klientsidevalidering forbedrer brugeroplevelsen, men giver ingen sikkerhed. Alle kan deaktivere JavaScript eller post direkte til slutpunktet, så alle regler vist her skal gentages på serveren.
Eksempel nr. 3: POPUP-besked ved hjælp af hændelse
Vis en simpel besked "Velkommen!!!" på din demo-webside, og når brugeren holder musen over beskeden, bør der vises en pop op-vindue med beskeden "Velkommen til min webside!!!".
Opløsning:
<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>
Forventet adfærd:
Page loads -> the text "Welcome!!!" appears in large type Mouse hovers -> an alert box shows "Welcome to my WebPage!!!"
Code forklaring: Lytteren er tilknyttet triggerfunktionen, som kører på body-onload-hændelsen. Det er vigtigt at vente på load, fordi afsnittet med id'et "hover" ikke findes, mens head-koden stadig parses. Det samme resultat opnås mere overskueligt ved at placere scriptet lige før det afsluttende body-tag eller ved at tilføje defer-attributten.
Eksempel nr. 4: Live Digital Clock ved hjælp af setInterval
Vis det aktuelle klokkeslæt på siden, og opdater det hvert sekund. Dette eksempel introducerer timere og viser det moderne alternativ til 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>
Forventet adfærd:
09:05:07 09:05:08 09:05:09 (the heading updates in place once per second)
Hvis showTime kaldes én gang før setInterval, undgås en synlig forsinkelse på et sekund, når siden åbnes. Brug clearInterval med den værdi, der returneres af setInterval, når uret skal stoppes.
De bedste øvelser til at skrive disse JavaScripteksempler
De tre originale eksemplarer stammer fra en tidligere stil JavaScript. Listen nedenfor viser, hvad der skal ændres, når de tilpasses til produktionsarbejde.
- Erstat document.write: Den sletter hele dokumentet, når det kaldes, efter at siden er indlæst. Byg et element og angiv textContent, eller tilføj en node i stedet.
- Deklarér hver variabel: Brug let og const i stedet for at stole på implicitte globaler såsom tælleren
ii løkkerne ovenfor. - Foretrækker tekstindhold frem for indreHTML: Indsættelse af brugerleveret tekst med innerHTML åbner et hul i cross-site scripting.
- Flyt handlere ud af markup'en: Erstat attributterne onkeyup og onclick med addEventListener, som holder adfærd adskilt fra struktur.
- Konverter promptinput: Ombryd værdier i Number(), før de bruges i sammenligninger, da prompt altid returnerer en streng.
- Valider igen på serveren: Behandl kun browsertjek som et bekvemmelighedslag.
For at tage disse eksempler videre, gennemgå JavaScript array-metoder for de parallelle arrays, der bruges i formvalidatoren, JavaScriptstrenge til kontrol af e-mailpositioner, og småkager i JavaScript at huske de værdier, en besøgende har indtastet. Bestem, hvor det færdige script hører hjemme ved at læse det. interne og eksterne JavaScript.

