Avatar billede tungnem Nybegynder
16. september 2007 - 16:36 Der er 20 kommentarer og
1 løsning

Funktionsforståelsesproblem

Hvad er fejlen/fejlene i dette:
<html>
<head>
<title>Funktioner</title>
<script LANGUAGE = "JavaScript">
var a = 10;
var b = 20;
var c = 30;
var d = 40;
function Gennemsnit (a, b, c, d){
result = (a + b + c + d) /4;
return result;
    alert(result);

}
</script>
</head>
<body>


</body>
</html>
Avatar billede Slettet bruger
16. september 2007 - 16:45 #1
burde et ikke vaere

<script type="text/javascript">

i stedet?

og desuden sker der jo ikke noget foer du koerer funktionen
Avatar billede neoman Novice
16. september 2007 - 16:46 #2
Der kommer vel intet ud af det ? Hvor kaldes din funktion Gennemsnit, og din alert kommer vel heller ikke op, fordi funktionen return'er inden den kommer til den.
Avatar billede tungnem Nybegynder
16. september 2007 - 16:48 #3
Næh, der kommer intet ud af det. Hvordan skal koden se ud?
Avatar billede olebole Juniormester
16. september 2007 - 17:18 #4
<ole>

Din script-kode kunne se sådan ud:

<script type="text/javascript">
var a = 10;
var b = 20;
var c = 30;
var d = 40;
function Gennemsnit (a, b, c, d){
    result = (a + b + c + d) /4;
    return result;
}

var mitSnit = Gennemsnit();
alert(mitSnit);
</script>


/mvh
</bole>
Avatar billede erikjacobsen Ekspert
16. september 2007 - 17:44 #5
Og et alternativ

<script type="text/javascript">
var a = 10;
var b = 20;
var c = 30;
var d = 40;
function Gennemsnit (p1,p2,p3,p4){
    var result = (p1+p2+p3+p4) /4;
    return result;
}

var mitSnit = Gennemsnit(a,b,c,d);
alert(mitSnit);
</script>
Avatar billede nielle Nybegynder
16. september 2007 - 17:56 #6
Eller hvis a, b, c og d alligevel ikke bruges til andet:

<script type="text/javascript">
function Gennemsnit (p1,p2,p3,p4){
    var result = (p1+p2+p3+p4) /4;
    return result;
}

var mitSnit = Gennemsnit(10,20,30,40);
alert(mitSnit);
</script>
Avatar billede tungnem Nybegynder
16. september 2007 - 18:40 #7
olebole: jeg får NaN når jeg prøver din kode.
erikjacobsen + nielle jeres koder giver 25.
erikjacobsen + nielle: hvorfor bruger I ikke variablerne a-d?
Hvad betyder p1, p2, mv.?
Men det jeg ikke kan forstå er, hvorfor det ikke er var result der skal kaldes. så vidt jeg kan se bliver den jo sat lig med gennemsnittet?
Avatar billede tungnem Nybegynder
16. september 2007 - 18:49 #8
Glem bare de tidligere spørgsmål:
Jeg prøvede følgende:
<html>
<head>
<title>Funktioner</title>
<script type="text/javascript">
var a = 10;
var b = 20;
var c = 30;
var d = 40;
function Gennemsnit (a,b,c,d){
    var result = (a+b+c+d) /4;
    return result;
}

var result = Gennemsnit(a,b,c,d);
alert(result);
</script>
</head>
<body>


</body>
</html>
Og det vil altså sige, at jeg skal anføre Gennemsnit(a,b,c,d); to gange i koden.
Det virker umiddelbart lidt tungt, men sådan er det altså.

Lav lige nogle svar.
Avatar billede erikjacobsen Ekspert
16. september 2007 - 18:51 #9
"erikjacobsen + nielle: hvorfor bruger I ikke variablerne a-d?"  Det gør jeg også i kaldet af funktionen. Men de navne parametrene har, skal ikke nødvendigvis være de samme som de værdier, der bruges til kaldet. Derfor kaldte jeg dem noget andet - navnet er selvfølgelig ligegyldigt, men "p1" = "parameter 1" ;)
Avatar billede Slettet bruger
16. september 2007 - 18:57 #10
Du gennemfoerer ikke Gennemsnit to gange.

Foerst deninerer du en funktion ved navn Gennemsnit. Denne funktion tager fire variable, som lokalt indeni denne funktion er refereret ved navnene a,b,c,d.

Foerst naar du har defineret funktionen kan du anvende den. Koerslen af

Gennemsnit(a,b,c,d) giver dig saa gennemsnittet af de predefinerede variable a,b,c,d, disse a,b,c,d er ikke de samme som der er anvendt inden i definitionen.
Avatar billede nielle Nybegynder
16. september 2007 - 19:16 #11
Du behøver slet ikke at definere gennemsnit() hvis du ikke ønsker det:

<script type="text/javascript">
var a = 10;
var b = 20;
var c = 30;
var d = 40;

alert((a+b+c+d) /4);
</script>

Men hvis du skal bruge den mere en en gang er det nu en udemærket ide at definere den alligevel - forresten også hvis den kun skal bruges een gang ialt; det gør din kode lettere at læse.
Avatar billede tungnem Nybegynder
16. september 2007 - 20:36 #12
Tak for alle kommentarer. Jeg forstår mere af det nu. Lav lige nogle svar, please!
Avatar billede erikjacobsen Ekspert
16. september 2007 - 20:38 #13
Ingen point til mig, tak.
Avatar billede tungnem Nybegynder
16. september 2007 - 20:42 #14
erikjacobsen Hvorfor skal du ikke have points???
Avatar billede erikjacobsen Ekspert
16. september 2007 - 20:44 #15
Jeg samler slet ikke på point, tak.
Avatar billede nielle Nybegynder
16. september 2007 - 20:45 #16
Springer over på denne her :^)
Avatar billede jhe-ting Nybegynder
16. september 2007 - 21:00 #17
// Generel gennemsnits rutine på et array

var talAry = [ 10, 20, 30, 40];

function mean(ary){
  var sum = 0, antal = ary.length;
  for (var ii=0; ii<antal; ii++){
    sum += ary[ii];
  }
  return sum/antal;
}
alert(mean(talAry));
Avatar billede tungnem Nybegynder
16. september 2007 - 21:35 #18
tak for koden jhe-ting.

Kan jeg ikke slippe af med mine point?
Avatar billede tungnem Nybegynder
17. september 2007 - 14:00 #19
Mange tak for hjælpen til alle. Jeg må hellere lukke nu.
Avatar billede olebole Juniormester
17. september 2007 - 14:20 #20
Erik >> Rigtig godt alternativ (16/09-2007 17:44:52)  ;D
Avatar billede roenving Novice
22. september 2007 - 11:18 #21
-- og udnyttelse af javascripts helt håbløse typeløshed:

function mean(){
  var args = mean.arguments;
  for(sum=0,i=0,im=args.length;im>i;i++)
    sum += args[i];
  return sum/args.length;
}

alert(mean(2,6,4,9));
alert(mean(3,6));

-- og fejl på: alert(mean()) !-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester