---
title: "nybörjare i javascript"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/157000-nybörjare-i-javascript"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Vinnaren"
published: "2007-02-09T13:45:04.000Z"
updated: "2007-02-16T10:59:40.000Z"
replies: 51
views: 3281
page: 1
pages: 3
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/157000-nybörjare-i-javascript"
---

# nybörjare i javascript

_Sida 1 av 3._

## #1 — Vinnaren, 2007-02-09T13:45Z

Hej

Jag har gjort en funktion som ska räkna ut medelvärdet av 4 tal, men den räknar inte "rätt"   x( 

```
tal1 = prompt("Tal 1");
tal2 = prompt("Tal 2");
tal3 = prompt("Tal 3");
tal4 = prompt("Tal 4");

medeltalet = ((tal1+tal2+tal3+tal4)/4);

document.write("Medeltalet är " + medeltalet);
```

 

Hur löser jag detta?  :q

Permalänk: https://www.webforum.nu/p/157000

## #2 — headbug, 2007-02-09T13:58Z

Vad får du för resultat när du provar?

Permalänk: https://www.webforum.nu/p/1933809

## #3 — Vinnaren, 2007-02-09T14:03Z

när jag matar in 1 2 3 4  så får jag svaret "Medeltalet är 308.5" Ganska högt :S

Permalänk: https://www.webforum.nu/p/1933811

## #4 — @nders, 2007-02-09T14:05Z

1234/4 är nog 308.5.

När du lägger ihop strängar blir det konkatenering av det hela, så du måste se till att hantera de inmatade talen som just tal.

```
medeltalet = ((parseInt(tal1) + parseInt(tal2) + parseInt(tal3) + parseInt(tal4))/4);
```

Man skall dock vara lite försiktig, annars kraschar saker och ting.

Permalänk: https://www.webforum.nu/p/1933814

## #5 — Vinnaren, 2007-02-09T14:10Z

tack, det fungerade.

Permalänk: https://www.webforum.nu/p/1933818

## #6 — @nders, 2007-02-09T14:11Z

Ska du använda decimaltal får du använda *parseFloat()*, och du måste kontrollera att det verkligen är tal som matats in, annars kommer det bli fel.

Permalänk: https://www.webforum.nu/p/1933819

## #7 — Vinnaren, 2007-02-09T14:26Z

okej. men om jag ska bygga om den och anv arrayer istället.

har provat med

	var myArray = new Array()

	inmatat = prompt("Ange talen ");
	myArray=\[inmatat\]
	
	for (i=0;i\<myArray.length;i++)
	{
	summa=summa+myArray\[x\];
	}
	
	medeltal = summa / myArray.length;
	
	
	document.write(medeltal);

så att man kan ange flera än de 4, men jag får inte denna att fungera efter att jag skickar in talen. Det händer inget :S

Permalänk: https://www.webforum.nu/p/1933822

## #8 — aasah, 2007-02-09T14:44Z

För det första: Omslut alltid kod med kod-taggar: \[ code\]....\[ /code\] (utan mellanslag) så blir det mycket lättare att läsa!

Sedan, du får fortfarande in strängar via din prompt, och måste alltså fortfarande konvertera dem till heltal (eller flyttal) enligt @nders råd ovan.

Ett annat fel är på sista raden här:

```
var myArray = new Array()
inmatat = prompt("Ange talen ");
myArray=[inmatat]
```

För att lägga till ett tal sist i arrayen skriv:

```
myArray.push(intval(inmatat));
```

Permalänk: https://www.webforum.nu/p/1933827

## #9 — Vinnaren, 2007-02-09T14:52Z

hmm, okey.

```

	var myArray = new Array()

	parseInt(inmatat) = prompt("Ange talen ");
	myArray.push(intval(inmatat));	
	
	for (i=0;i<myArray.length;i++)
	{
	summa=parseInt(summa)+parseInt(myArray[x]);
	}
	
	medeltal = parseInt(summa) / myArray.length;	
	
	document.write(medeltal);
```

 

har nu denna kod, men fungerar inte. Kan man inte göra så att man anger alla talen i samma dialogruta? eller måste man göra flera dialogrutor?

Permalänk: https://www.webforum.nu/p/1933831

## #10 — aasah, 2007-02-10T17:53Z

Om du vill använda dig av dialogrutor just, så:
Du måste antingen ha lika många dialogrutor som tal alternativt på något sätt behandla strängen du får tillbaka innan du försöker konvertera den. Om du tex skriver in "3, 7, 9, 0" i din dialogruta är det en sträng med *exakt* det utseendet du får tillbaka. Komplett med kommatecken och mellanslag. Självklart kan en sådan sträng inte göras om till **ett** tal! Hur skulle det gå till?

Vill du ha det i **en** ruta får du bestämma vad du skriver in mellan talen, och sedan gå igenom din sträng tecken för tecken och leta upp avdelarna. Mellan två avdelare, före den första och efter den sista, har du dina tal. Kan också göras med reguljära uttryck, och ev finns det fler sätt?

Permalänk: https://www.webforum.nu/p/1934096

## #11 — Vinnaren, 2007-02-10T21:07Z

hmm, vet int om jag är på rätt spår...

```
function funktionen() 
{		

	var myArray = new Array()

	antaltal = prompt("Ange antalet tal som ska matas in:");

	
	for (i=0;i<antaltal;i++)
	{
	inmatat = prompt("Ange ett tal:");
	myArray.push(intval(inmatat));
	}
}
```

 

Jag vill alltså ta en Array, innehållandes heltal, som inparameter. Sen så ska funktionen beräkna medelvärdet av talen som finns i den medsända Arrayen.

Vet inte hur jag löser det på enklaste sättet?  :q

Permalänk: https://www.webforum.nu/p/1934138

## #12 — aasah, 2007-02-11T12:37Z

Du är på rätt spår ja. :) **Men** alla tilldelningar i JS avslutas med semikolon, vilket du glömt på funktionens första rad.

Permalänk: https://www.webforum.nu/p/1934212

## #13 — Vinnaren, 2007-02-12T18:44Z

ok, har nu följande kod:

```

	var myArray = new Array();
	var summa;
	var medeltal;
	var antaltal;
	var inmatat;

	antaltal = prompt("Ange antalet tal som ska matas in:");
	
	for (i=0; i < antaltal; ++i)
	{
		inmatat = prompt("Ange ett tal:");
		myArray.push(inmatat);
	}
	
	parseInt(summa) = add(myArray);
	
	medeltal = summa / myArray.length;
```

 

men det skrivs inget ut, jag skulle tro att felet ligger på add(myArray), finns väll något man skriver för att lägga ihop alla tal i en array?

Permalänk: https://www.webforum.nu/p/1934551

## #14 — headbug, 2007-02-12T20:14Z

Men en om en add-funktion fanns så skulle den (internt) behöva loopa igenom alla värden igen, så jag föreslår att du redan i for-loopen räknar upp summan i en variabel summan_så\_här_långt

Permalänk: https://www.webforum.nu/p/1934577

## #15 — itpastorn, 2007-02-12T20:26Z

Array objektet har ingen add metod

Syntaxen vore array.add(), inte add(array). Det senare liknar mer syntaxen i PHP.

Men inte ens JS 1.7 har den funktionen:
<http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array>

Effektivast möjliga kodning vore - som sagt - att addera redan under tiden talen läses in.

Lars Gunther

Permalänk: https://www.webforum.nu/p/1934580

## #16 — Vinnaren, 2007-02-13T12:43Z

hmm, oki. jag bygger nog om den lite, ska inte anv någon frågeruta, utan det ska vara förbestämda tal som den ska räkna.

jag vill på min html sida skicka in en array med tex 7 siffror.
koden jag har hittills på html sidan:

```
<script language="JavaScript" type="text/javascript">
	<!--
		var testar = new Array(6);
	
		testar(10, 14, 16, 17, 24, 11, 22);
	//-->
</script>
```

 

sen i js filen har jag följande:

```
function testar(tal1, tal2, tal3, tal4, tal5, tal6, tal7) 
{		
	var summa:
	var medeltal;
	
	
	for (i=0; i < testar.lenght; ++i)
	{
		summa += myArray[i]
	}
	
	medeltal = summa / testar.lenght;	
	
	document.write(medeltal);
}
```

 

vet inte om jag har gjort rätt, det fungerar iaf inte   :r

Permalänk: https://www.webforum.nu/p/1934706

## #17 — spango, 2007-02-13T13:03Z

Döp aldrig en funktion till samma sak som en global variabel (och använd inte globala variabler). Här är en version som borde funkar fina fisken:

```
var numbers = []; // tom array för alla inmatade siffror
var sum = 0; // summan av alla siffror
var input; // det senaste användaren skrev in
do {
    // läs in tal
    input = prompt("Skriv in ett tal (tryck på Avbryt för att sluta)", "");
    if (input != null){
        // användaren tryckte inte på avbryt
        var n = parseInt(input);
        sum += n;
        numbers.push(n);
    }
} while(input != null);
// användaren har tryckt på avbryt, räkna ut medelvärde för de inmatade talen
var average = sum / numbers.length;
```

Detta kraschar såklart om man trycker på avbryt redan första varvet (pga division med noll), men jag lämnar det som en övning till läsaren att ta hand om detta.

Permalänk: https://www.webforum.nu/p/1934711

## #18 — Vinnaren, 2007-02-13T13:19Z

hmm, tack för tipset, men jag hade tänkt att göra om så ingen ruta kommer fram, utan talen som ska beräknas är redan inskrivna på html sidan. vet inte redigt hur man löser det på bästa och enklaste sättet??

Permalänk: https://www.webforum.nu/p/1934714

## #19 — The_Hulk, 2007-02-13T13:34Z

du har valt att din funktion "testar" ska ta emot 7 parametrar, tal1, tal2, ..., tal7.

dessa använder du inte sen i din funktion utan du försöker använda funktionsnamnet som en array.

Det hade varit smidigare om du skickade in en array till din funktion istället för att säga att det ska vara 7 tal så tar du bara emot en parameter i din funktion.

Döp antingen om arrayn på din HTML-sidan eller byta namn på funktionen. skicka sedan in arrayn på HTML-sidan till funktionen.

ger dig ingen kod till att börja med utan det är bättre om du kan lösa det själv. Vet inte om min förklaring är självklar.

Permalänk: https://www.webforum.nu/p/1934718

## #20 — Vinnaren, 2007-02-13T13:52Z

tack, nu börjar jag förstå  :P   :i 

har nu följande kod:

```
<script language="JavaScript" type="text/javascript">
	<!--
		var myArray = new Array(6);
	
		myArray[10, 14, 16, 17, 24, 11, 22];
		
		testar(myArray);
	//-->
</script>
```

 

sen i js filen:

```
function testar(myArray) 
{		
	var summa;
	var medeltal;
	
	
	for (i=0; i < myArray.lenght; ++i)
	{
		summa += myArray[i];
	}
	
	medeltal = summa / myArray.lenght;	
	
	document.write(medeltal);
}
```

 

nu kommer det fram "NaN". är väll något med uträkningen? vet inte redigt hur man löser det  :q

Permalänk: https://www.webforum.nu/p/1934722

---

Tråden på webben: https://www.webforum.nu/amne/javascript/157000-nybörjare-i-javascript  
Nästa sida: https://www.webforum.nu/amne/javascript/157000-nybörjare-i-javascript/page2.md
