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 200026 914 inlägg
#2

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

Mvh

The_HulkMedlem sedan juni 20031 937 inlägg
#3

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

@ndersMedlem sedan juni 200026 914 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.

Genererad på 386 ms · cache AV · v20260730165559-full.f96bc7eb