webForumDet fria alternativet

Javascript hjälp önskas

JavaScript

4 svar · 597 visningar · startad av remarkable

Medlem sedan maj 20102 inlägg
Frågan#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>
Medlem sedan juni 200032 967 inlägg
#2

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

Mvh

Medlem sedan juni 20031 837 inlägg
#3

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

Medlem sedan juni 200032 967 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;
			}
Medlem sedan maj 20102 inlägg
#5

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

253 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)