Praktisk JavaSkriptexempel med källkod Code
⚡ Smart sammanfattning
Praktisk Code Exempel med JavaSkript demonstrerar hur loopar, formulärvalidering och händelser löser vardagliga webbläsaruppgifter. Den här artikeln presenterar en multiplikationstabellgenerator, en komplett valideringsmetod för registreringsformulär, en popup-meny som aktiveras genom att hålla muspekaren över, en digital klocka i realtid och de metoder som gör att sådana skript är tillförlitliga.

Vad du kommer att bygga i dessa JavaExempel på skript
Varje exempel nedan är en komplett HTML-sida som körs i vilken webbläsare som helst utan ett byggsteg eller externt bibliotek. Tillsammans täcker de de tre färdigheter som förekommer i nästan alla webbläsarskript: generera markup från data, validera användarinmatning och reagera på händelser.
| Exempelvis | Koncept övat | Viktiga metoder som använts |
|---|---|---|
| Multiplikationstabell | Kapslade loopar och strängbyggande | fråga, för, medan, dokument.skriv |
| Formvalidering | Matriser, villkor och DOM-uppdateringar | getElementById, indexOf, lastIndexOf, innerHTML |
| Popup-meddelande | Eventhantering | addEventListener, varning |
| Digital klocka | Timrar och datumformatering | setInterval, Date, padStart, textContent |
Grundläggande förtrogenhet med JavaScript syntax antas. Om looparna fortfarande är okända, läs hur man använder loopar i JavaScript innan du startar.
Exempel #1: JavaScript multiplikationstabell
Skapa en enkel multiplikationstabell där användaren blir ombedd att ange antalet rader och kolumner.
Lö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>
Utdata (3 rader och 4 kolumner):
1 2 3 4 2 4 6 8 3 6 9 12
Code förklaring: Den yttre for-slingan skapar en tabellrad per iteration, medan den inre while-slingan fyller den raden med en cell per kolumn. Räknaren j återställs till 1 efter varje rad, vilket är det steg som de flesta nybörjare glömmer. Utan den återställningen skulle bara den första raden innehålla några celler.
💡 Tips: Promptfunktionen returnerar alltid en sträng. Uttrycket i*j fungerar eftersom JavaSkriptet konverterar båda operanderna till tal för multiplikation, men en jämförelse som rows > 5 skulle jämföra text. Radbryt inmatningen i Number() när värdet används för både aritmetik och jämförelse.
Exempel nr 2: Exempel på JS Forms
Skapa ett exempelformulärprogram som samlar in förnamn, efternamn, e-postadress, användar-ID, lösenord och bekräfta lösenord från användaren. Alla inmatningar är obligatoriska och den angivna e-postadressen ska vara i rätt format. Värdena som anges i textrutorna lösenord och bekräfta lösenord ska också vara desamma. Efter validering med JavaScript, visa korrekta felmeddelanden i rött precis bredvid textrutan där det finns ett fel.
Lösning med källa 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>
Förväntat beteende:
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 förklaring: Tre matriser körs parallellt. ingångar håller de aktuella värdena, fel innehåller matchande meddelanden, och divs innehåller ID:t för behållaren som visar varje meddelande. Indexet länkar därför ett fält, dess feltext och dess utdataplats. E-postgrenen accepterar endast en adress när at-tecknet inte är det första tecknet, och när minst två tecken skiljer at-tecknet från den sista punkten.
⚠️ Varning: Klientsidesvalidering förbättrar användarupplevelsen men ger ingen säkerhet. Vem som helst kan inaktivera JavaSkript eller post direkt till slutpunkten, så varje regel som visas här måste upprepas på servern.
Exempel 3: POPUP-meddelande med hjälp av händelse
Visa ett enkelt meddelande "Välkommen!!!" på din demosida, och när användaren håller muspekaren över meddelandet bör ett popup-fönster visas med meddelandet "Välkommen till min webbsida!!!".
Lö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>
Förväntat beteende:
Page loads -> the text "Welcome!!!" appears in large type Mouse hovers -> an alert box shows "Welcome to my WebPage!!!"
Code förklaring: Lyssnaren är kopplad inuti triggerfunktionen, som körs på body-onload-händelsen. Att vänta på load spelar roll, eftersom stycket med id:t "hover" inte existerar medan head-taggen fortfarande tolkas. Samma resultat uppnås tydligare genom att placera skriptet precis före den avslutande body-taggen, eller genom att lägga till defer-attributet.
Exempel nr 4: Live Digitalklocka med setInterval
Visa aktuell tid på sidan och uppdatera den en gång per sekund. Det här exemplet introducerar timers och visar det moderna alternativet till 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>
Förväntat beteende:
09:05:07 09:05:08 09:05:09 (the heading updates in place once per second)
Genom att anropa showTime en gång före setInterval undviks en synlig fördröjning på en sekund när sidan öppnas. Använd clearInterval med värdet som returneras av setInterval när klockan behöver stoppas.
Bästa praxis för att skriva dessa JavaExempel på skript
De tre originalexemplen härstammar från en tidigare stil av JavaSkript. Listan nedan visar vad som ska ändras när man anpassar dem för produktionsarbete.
- Ersätt document.write: Den raderar hela dokumentet när det anropas efter att sidan har laddats. Bygg ett element och ange textContent eller lägg till en nod istället.
- Deklarera varje variabel: Använd let och const istället för att förlita sig på implicita globala värden som räknaren.
ii slingorna ovanför. - Föredrar textContent framför innerHTML: Att infoga användardefinierad text med innerHTML öppnar ett hål i skriptning över flera webbplatser.
- Flytta hanterare ut ur markupen: Ersätt attributen onkeyup och onclick med addEventListener, vilket håller beteendet separerat från strukturen.
- Konvertera promptinmatning: Radbryt värden i Number() innan de används i jämförelser, eftersom prompten alltid returnerar en sträng.
- Validera igen på servern: Behandla webbläsarkontroller endast som ett bekvämlighetslager.
För att ta dessa exempel vidare, granska JavaSkriptmatrismetoder för de parallella arrayerna som används i formvalideraren, JavaSkriptsträngar för kontroll av e-postpositionen, och kakor i JavaScript för att komma ihåg de värden som en besökare angav. Bestäm var det färdiga manuset hör hemma genom att läsa internt och externt JavaScript.
