Hello all. I wonder how i can make the function “sistaefternamn” easier/simpler. And an explenation of the simplification would be nice. Here comes the code.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Inlämningsuppgift 4</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
//Här börjar mitt JavaScript ^^
var fornamn = new Array();
// Array för förnamnen, First name.
var efternamn = new Array();
// Array för efternamnen, Family name.
var personnummer = new Array();
// Array för personnummer
var ar = new Array();
//Variablerna ska innehålla de första fyra siffrorna för datum
var registrerade = 0;
//Variabel som håller koll på hur många som registrerat sig.
var man = 0;
//Variabel som håller koll på hur många män som registrerat sig.
var kvinna = 0;
//Variabel som håller koll på hur många kvinnor som registrerat sig.
var aldst = 0;
//Variabel som håller koll på vem den äldsta personen är.
// charAt låter mig veta vilket tal som är etta, tvåa, trea osv
function GO() {
// denna funktionen anropar funktionerna under.
if (rattsymboler()) {
//om min funktion rattsymboler är rätt så kallar dem på dem där under.
ok();
helaaldern();
skrivutinformation();
sistaefternamnen();
//denna funktionen kollar de tre sista efternamnen
}
}
function ok() {
//denna funktionen gör:
fornamn[registrerade] = document.getElementById('FNAMN');
//här kollas vad som står i mitt formulär i förnamn. Den kollar i en array
fornamn[registrerade] = fornamn[registrerade].value;
//Värdet i FNAMN
efternamn[registrerade] = document.getElementById('ENAMN');
//här kollas efternamnet från formuläret
efternamn[registrerade] = efternamn[registrerade].value;
//värdet i ENAMN
personnummer[registrerade] = document.getElementById('PNR');
personnummer[registrerade] = personnummer[registrerade].value;
//värdet i PNR
registrerade++;
//vi har en variabel som heter räkna. Har en knapp som röknar. Tar namnet på variabeln. ökar. det ökar med ett. Om jag till exempel skriver sju namn och efternamn och personnummer så visar den i sidan hur många gånger jag skrivit in information på sidan.
var h1 = document.getElementById("h0");
// här gör jag en ny variabel som heter h1. Den tar värdet från h0
h1.lastChild.nodeValue = fornamn[registrerade-1] + " , du är (id) år gammal ";
} //Här är det som skrevs sist i variabeln h1 som skrivs in i rubriken på hemsidan. Skriver man in ett nytt namn visas det nya namnet bara!.
function kollapersonnummer() {
//denna funktionen anropar andra funktioner som kollar mitt personnummer
var personnummer = "";
//variabeln bersonnummer = tom
personnummer = document.getElementById('PNR');
//variabeln personnummer blir till det som finns i formuläret
personnummer = personnummer.value;
if (kolladatum(personnummer) == true) {
//om kolladatum i personnummer är sant -
if (kollaPlusEllerMinus(personnummer) == true) {
// och om kollaplusellerminus är rätt
if (kollasymboler(personnummer) == true) {
//och om kollasymboler är rätt
return true;
//Så är det sant och den kan gå vidare.
}
}
}
}
function kollaPlusEllerMinus(personnummer) {
//denna funktionen kollar om det sjunde tecknet är ett plus eller minus
var number = personnummer;
//här gör jag en lokal variabel som tar personnummret
var sign = personnummer.charAt(6);
//här görs en variabel som kollar det sjunde tecknet
if (sign == "-" || sign == "+") {
//om det sjunde tecknet är ett + eller -
return true;
// då är det rätt
}
else {
//annars
alert("Nej nej nej, innan dina fyra sista siffror så måste du ha ett plus eller minus");
return false;
//skriv en popup som skriver detta och gör det till fel
}
}
function kollasymboler(personnummer) {
//funktionen ....
var number = personnummer;
//Variabeln nummer är det samma som arrayen personnummer
var code = "";
// det betyder att det inte står något i code
for (var i = 7; i <=10; i++) {
// så länge som i är mindre eller lika med tio så plussar man på ett.
code = code + personnummer.charAt(i);
}
if (!(isNaN(code))) {
//Om koden är ett nummer
if ((code.charAt(2) % 2) == 1) {
//om siffrorna är delbara med 2 och
man++;
//du är en man
else {
kvinna++;
//annars är du en kvinna
}
return true;
}
else {
alert("Du har skrivit fel på dina sista fyra siffror");
return false;
//Här kommer det ut en alert som säger att sista fyra siffrorna är fel. Den gör detta till false.
}
}
function kolladatum(personnummer) {
var date = "";
var number = personnummer;
for (var i = 0; i <=5; i++) {
date = date + personnummer.charAt(i);
}
if (!(isNaN(date))) {
return true;
}
else {
alert("Du har skrivit fel på dina första sex siffror ");
return false;
}
}
function kollaar(temp) {
if (personnummer[registrerade-1].charAt(0) != 0) {
temp = (personnummer[registrerade-1].charAt(0) + personnummer[registrerade-1].charAt(1));
}
else {
temp = personnummer[registrerade-1].charAt(1);
}
return temp;
}
function skrivutinformation() {
//denna funktionen skriver ut funktionen skrivutalder och annat som beskrivs under
skrivutalder();
var p0 = document.getElementById("p0");
// jag gör en variabel som är p0 och som tar det som står i mitt p0 ID
p0.lastChild.nodeValue = "Antalet registrerade män: " + man;
//
var p1 = document.getElementById("p1");
p1.lastChild.nodeValue = "Antalet registrerade kvinnor: " + kvinna;
var p4 = document.getElementById("p4");
// denna variabeln tar det som står i ID't p4
p4.lastChild.nodeValue = fornamn[aldst] + " " + efternamn[aldst] + " du är " + ar[aldst] + " år och äldst bland de registrerade.";
}
function skrivutalder() {
var temp = fornamn[registrerade-1] + ", du är " + ar[registrerade-1] + " år gammal. ";
if (ar[registrerade-1] == 17) {
temp = temp + "Du är snart vuxen!!!"
}
else if (ar[registrerade-1] >= 65) {
temp = temp + "Du är pensionär!!!";
}
else if (ar[registrerade-1] > 10 && ar[registrerade-1] < 13) {
temp = temp + "Du är snart tonåring!!!";
}
else {
temp = temp;
}
var h1 = document.getElementById("h0");
h1.lastChild.nodeValue = temp;
}
function sistaefternamnen() {
var temp = "";
for (var i = 1; i < 4; i++) {
if ((registrerade-i) == 0 || i == 3 && (registrerade-i) >= 0) {
temp = temp + efternamn[registrerade-i];
}
else if ((registrerade-i) > 0) {
temp = temp + efternamn[registrerade-i] + ", ";
}
else {
break;
}
}
var tempP = document.getElementById('p3');
tempP.lastChild.nodeValue = temp;
}
function artonhundratalet(temp) {
var tTemp = temp;
if (tTemp <= 9) {
ar[registrerade-1] = 100 + 9 - tTemp;
}
else{
ar[registrerade-1] = ((200-tTemp) + 9);
}
if (ar[registrerade-1] >= ar[aldst]) {
aldst = registrerade-1
}
}
function nittonhundratalet(temp) {
var tTemp = temp;
if (tTemp <= 9) {
ar[registrerade-1] = 9 - tTemp;
}
else{
ar[registrerade-1] = ((100-tTemp) + 9);
}
if (ar[registrerade-1] >= ar[aldst]) {
aldst = registrerade-1
}
}
function helaaldern() {
var temp = 0;
temp = kollaar(temp);
temp = parseInt(temp);
var sign = (personnummer[registrerade-1].charAt(6));
if (sign == "-") {
//om det är ett minus
nittonhundratalet(temp);
//använd nittonhundratalet
}
else {
artonhundratalet(temp);
//annars använd artonhundratalet
}
}
function rattsymboler() {
var temp = document.getElementById('FNAMN');
//här gör jag en temporär variabel som tar efelentet förnamn
var temp2 = document.getElementById('ENAMN');
//samma sak fast med efternamn
if ((isNaN(temp.value)) && (isNaN(temp2.value))) {
//om temp inte är ett tal och temp2 inte är ett tal
var temp3 = document.getElementById('PNR');
//samma som temp 1 och 2.
if (temp3.value.length == 11) {
//Kolla hur långt det är
if (kollapersonnummer()) {
//om det i kollapersonnummer
return true;
//gör det till rätt
}
}
else {
alert("Ditt personnummer är inte rätt!!!");
return false;
// annars skirv alerten som säger det som står och gör det till false
}
}
else {
alert("Ditt namn och/eller efternamn är felskrivet");
return false;
//annars skriv alerten som säger det som står och gör det till false
}
}
</script>
</head>
<body>
<h1>Registrering</h1>
<form action="#" method="post">
<fieldset>
<legend>Personuppgifter</legend>
<label for="FNAMN">Förnamn:</label>
<input type="text" id="FNAMN"><br>
<label for="ENAMN">Efternamn:</label>
<input type="text" id="ENAMN"><br>
<label for="PNR">Personnummer:</label>
<input type="text" id="PNR"><br>
<input type="button" id="sendButton" value="Spara" onclick="GO();">
</fieldset>
</form>
<h1 id="h0">...</h1>
<p id="p0">Antalet registrerade män: 0</p>
<p id="p1">Antalet registrerade kvinnor: 0</p>
<p id="p2">De tre senaste registrerade heter i efternamn: </p>
<p id="p3">ingen registrerad</p>
<p id="p4">Det finns ingen registrerad.</p>
</body>
</html>