webForumDet fria alternativet

Javascript hjälp önskas

4 svar · 595 visningar · startad av remarkable

remarkableMedlem sedan maj 20102 inlägg
#1

Hej,
nu är det så att jag behöver hjälp att förenkla den här funktionen på ett bra sätt, var längesen jag satt med javascript så har lite problem, så hjälp önskas! Det som behövs fixas är det som jag fetstilat.

<!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">
		
			var firstName = new Array();
			var lastName = new Array(); 
			var pNumber = new Array();
			var age = new Array(); 
			var digits = new Array();
			
			var registered = 0; 
			var men = 0; 
			var women = 0; 
			var oldest = 0; 
			
			function main() 
			{
				if (contentInfo()) 
				{
					save();
					threeNames();
					ageCheck();
					showInfo();
				}
			}
			
			function showInfo() 
			{
				ageComments();			
				var p1 = document.getElementById("p1");
				p1.lastChild.nodeValue = "Antalet registrerade män: " + men;
				
				var p2 = document.getElementById("p2");
				p2.lastChild.nodeValue = "Antalet registrerade kvinnor: " + women;
				
				var p5 = document.getElementById("p5");
				p5.lastChild.nodeValue = firstName[oldest] + " " + lastName[oldest] + " du är " + age[oldest] + " år och äldst bland de registrerade.";
				
			}
			
			function ageComments() 
			{
				var temp = firstName[registered-1] + ", du är " + age[registered-1] + " år gammal. ";
				if (age[registered-1] == 17) 
				{
					temp = temp + "Du är snart vuxen!"
				}
				else if (age[registered-1] > 10 && age[registered-1] < 13)
				{
					temp = temp + "Du är snart tonåring!";
				}
				else if (age[registered-1] >= 65)
				{
					temp = temp + "Du är pensionär!";
				}
				else {
					temp = temp;
				}
					var h1 = document.getElementById("h1");
					h1.lastChild.nodeValue = temp;
			}
			
			function verifyId() 
			{
				var pNumber = "";
				pNumber = document.getElementById('pNumber');
				pNumber = pNumber.value;
				if (dateCheck(pNumber) == true) 
				{
					if (sexCheck(pNumber) == true) 
					{
						if (pCheck(pNumber) == true) 
						{
							return true;
						}
					}
				}
			}

			[B]function threeNames() 
			{
				var temp = "";
				for (var i = 1; i < 4; i++) 
				{
					if ((registered-i) == 0 || i == 3 && (registered-i) >= 0) 
					{
						temp = temp + lastName[registered-i];
					}
					else if ((registered-i) > 0) {
						temp = temp + lastName[registered-i] + ", ";
					}
					else 
					{
						break;
					}
				}
					var tempP = document.getElementById('p4');
					tempP.lastChild.nodeValue = temp;
			}[/B]
				
			
			
			function pCheck(pNumber) 
			{
				var number = pNumber;
				var code = "";
				for (var i = 7; i <=10; i++) 
				{
					code = code + pNumber.charAt(i);
				}
				if (!(isNaN(code))) {
					if ((code.charAt(2) % 2) == 1) 
					{
						men++;
					}
					else 
					{
						women++;
					}
					return true;
				}
				else 
				{
					alert("De sista fyra tecknen i personnummert är felskrivna.");
					return false;
				}
			}
			
			function dateCheck(pNumber) 
			{
				var date = "";
				var number = pNumber;
				for (var i = 0; i <=5; i++) 
				{
					date = date + pNumber.charAt(i);
				}
				if (!(isNaN(date))) 
				{
					return true;
				}
				else {
					alert("De första fyra siffrorna i personnummert är inte korrekta.");
					return false;
				}
			}
			
			function sexCheck(pNumber) 
			{
				var number = pNumber;
				var sign = pNumber.charAt(6);
				if (sign == "-" || sign == "+")
				{
					return true;
				}
				else 
				{
					alert("Det 7:e tecknet i personnummert måste vara ett + eller -.");
					return false;
				}
			}
			
			function ageCheck() 
			{
				var temp = 0;
				temp = defineAge(temp);
				temp = parseInt(temp);
				var sign = (pNumber[registered-1].charAt(6));
				if (sign == "-") 
				{
					underHundered(temp);
				}
				else 
				{
					overHundered(temp);
				}
			}
			
			function defineAge(temp) 
			{
				if (pNumber[registered-1].charAt(0) != 0) 
				{
				temp = (pNumber[registered-1].charAt(0) + pNumber[registered-1].charAt(1));
				}
				else 
				{
					temp = pNumber[registered-1].charAt(1);
				}
				return temp;
			}
			
			function underHundered(temp) 
			{
				var tTemp = temp;
				if (tTemp <= 9) 
				{
				age[registered-1] = 9 - tTemp;
				}
				else
				{
					age[registered-1] = ((100-tTemp) + 9);
				}
				if (age[registered-1] >= age[oldest]) 
				{
					oldest = registered-1
				}
			}
			
			function overHundered(temp) 
			{
				var tTemp = temp;
				if (tTemp <= 9) 
				{
				age[registered-1] = 100 + 9 - tTemp;
				}
				else
				{
					age[registered-1] = ((200-tTemp) + 9);
				}
				if (age[registered-1] >= age[oldest]) 
				{
					oldest = registered-1
				}
			}
				
			function contentInfo() 
			{
				var temp = document.getElementById('firstName');
				var temp2 = document.getElementById('lastName');
				if ((isNaN(temp.value)) && (isNaN(temp2.value))) 
				{
					var temp3 = document.getElementById('pNumber');
					if (temp3.value.length == 11) 
					{
						if (verifyId()) 
						{
							return true;
						}
					}
					else 
					{
						alert("Du har skrivit fel i personnummert!");
						return false;
					}
				}
				else 
				{
					alert("Förnamnet och/eller efternamnet är inte korrekt!");
					return false;
				}
			}
			
			
			function save() 
			{ 
				firstName[registered] = document.getElementById('firstName');
				firstName[registered] = firstName[registered].value;
				lastName[registered] = document.getElementById('lastName');
				lastName[registered] = lastName[registered].value;
				pNumber[registered] = document.getElementById('pNumber');
				pNumber[registered] = pNumber[registered].value;
				registered++;
				
				var h1 = document.getElementById("h1");
				h1.lastChild.nodeValue = firstName[registered-1] + ", du är (id) år gammal";
			}
			
		</script>
	</head>  
	
	<body>  
		<h1>Registrering</h1>
		<form action="#" method="post">
		<fieldset>

			<legend>Personuppgifter</legend>
				<label for="firstName">Förnamn:</label>
				<input type="text" id="firstName"><br>
				<label for="lastName">Efternamn:</label>
				<input type="text" id="lastName"><br>
				<label for="pNumber">Personnummer:</label>
				<input type="text" id="pNumber"><br>

				<input type="button" id="sendButton" value="Spara" onclick="main();">
			</fieldset>
		</form>
		
		<h1 id="h1">...</h1>
		<p id="p1">Antal registrerade män: 0</p>
		<p id="p2">Antal registrerade kvinnor: 0</p>
		<p id="p3">De tre senaste registrerade heter i efternamn: </p>

		<p id="p4">Ingen registrerad</p>
		<p id="p5">Det finns ingen registrerad.</p>
		
	</body> 
</html>
@ndersMedlem sedan juni 200032 969 inlägg
#2

Flyttas från Programmering - Övrigt till Javascript-forumet.

Mvh

The_HulkMedlem sedan juni 20031 837 inlägg
#3

Ser inget i fetstil, vet inte om man kan använda de taggarna i kod-taggen.

@ndersMedlem sedan juni 200032 969 inlägg
#4

The_Hulk skrev:

Ser inget i fetstil, vet inte om man kan använda de taggarna i kod-taggen.

Jag ser fetstil - man kan använda b-taggar inom [****kod]. Detta är fetmarkerat i inlägget ovan:

			function threeNames() 
			{
				var temp = "";
				for (var i = 1; i < 4; i++) 
				{
					if ((registered-i) == 0 || i == 3 && (registered-i) >= 0) 
					{
						temp = temp + lastName[registered-i];
					}
					else if ((registered-i) > 0) {
						temp = temp + lastName[registered-i] + ", ";
					}
					else 
					{
						break;
					}
				}
					var tempP = document.getElementById('p4');
					tempP.lastChild.nodeValue = temp;
			}
remarkableMedlem sedan maj 20102 inlägg
#5

Precis som @nders skrev ovan är det den funktionen som behövs förenklas.

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
128 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)