webForumDet fria alternativet

inget händer vid knapptryckning

39 svar · 1 133 visningar · startad av ptr_lks · sida 2 av 2

ptr_lksMedlem sedan juni 2005584 inlägg
#21

Palle skrev:

1. Visst gör det det, du slipper ex. att i funktionen fördefinera vilket formulär anropet ska gälla, och kan på så sätt lätt återanvända samma funktion för flera olika formulär.

2. Då jag personligen föredrar att flytta ut koden ur presentationslagret, och samlar alla dessa i en separat JS-fil, så anser jag att en bra skriven funktion är att föredra framför script och funktioner direkt i presentationslagret.

Menar du alltså att

var f = document.sushi;

är att föredra?

PalleMedlem sedan apr. 20003 174 inlägg
#22

Nej, jag föredrar this.form.. då kan jag lätt återanvända funktioner genom att skicka this.form till funktionen för att tala om vilket formulär som ska användas.

Med var f = document.sushi; har du ju låst upp dig genom att ange att formuläret du ska använda heter sushi..

PalleMedlem sedan apr. 20003 174 inlägg
#23

..ex:

<html>
<head>

	<title>Sushi</title>
	<script type="text/javascript">
	function fCalculateSushi(objForm)
	{
		var lkal = ((132.2*46)/100);
		var lfett = ((4,83*46)/100);
		objForm.laxpts.value = (objForm.lax.value*(lkal + lfett));
	}
	</script>

</head>
<body>

<h2><strong>Omvandla Sushi bitar till points</strong></h2>

<form method="post" action="">
<table width="331" border="0">
<tr>
<td><input type="text" name="lax" size="5">&nbsp;bit&nbsp;Lax sushi</td>
<td><input type="button" onClick="fCalculateSushi(this.form);" value="ger"></td>
<td><input type="text" name="laxpts" size="5">&nbsp;points</td>
</tr>
</table>
</form>

</body>
</html>
ptr_lksMedlem sedan juni 2005584 inlägg
#24

tack palle

Palle skrev:

Nej, jag föredrar this.form.. då kan jag lätt återanvända funktioner genom att skicka this.form till funktionen för att tala om vilket formulär som ska användas.

Och tala om gör du genom att byta ut

objForm => this.form

förstår jag rätt?

PalleMedlem sedan apr. 20003 174 inlägg
#25

Nej.. asså endast i formuläret använder jag this.form i funktionsanropet.
Det fungerar inte att använda this.form innuti en funktion, det måste användas
innuti ett formulär för att tala om att det är detta formulär som gäller. :)

ex.

I vårt fall med din kod så heter ju funktionen fCalculateSushi, så vårt funktionsanrop på knappen ser ut så här:

...
<form method="post" action="">
...
<td><input type="button" onClick="fCalculateSushi(this.form);" value="ger"></td>
...
</form>
...

..och detta tar jag sedan emot i funktionen..

function fCalculateSushi(objForm)
{
	...
}

..där objForm i funktionen nu fungerar som en referensen till formulär-objektet.
Jag kan ha döpt den till lingon eller banan istället, det spelar mindre roll, dock bör man
ju döpa den så man själv förstår vad den är och vad den gör - i detta fall formulär objektet = objForm.

Hänger du med? :)

ptr_lksMedlem sedan juni 2005584 inlägg
#26

Palle skrev:

Hänger du med? :)

det känns så...

ptr_lksMedlem sedan juni 2005584 inlägg
#27

fast nu ahr jag ett nytt problem

så här ser funktionen ut:

function fpointsSushi(objForm)
{
var val = objForm.sushi.value=Math.round(((objForm.lx.value*(lxkal+lxfett))+(objForm.tf.value*(tfkal+tffett))+
(objForm.re.value*(rekal+refett))+(objForm.ks.value*(srkal+kskal+ksfett))+
(objForm.av.value*(srkal+avkal+avfett)))*10)/10;

}

  1. på variabeln var - ta fram decimalen
  2. om decimalen är mellan 0 och 0,29 => avrunda ner till närmaste heltal
  3. om decimalen är mellan 0 och 0,25 => avrunda till 0,5
  4. om decimalen är mellan 0,55 och 0, 99 => runda uppåt till närmase heltal

Tack för ordet
/ptr

PalleMedlem sedan apr. 20003 174 inlägg
#28

Visa hela koden du har nu. :)

ptr_lksMedlem sedan juni 2005584 inlägg
#29

Palle skrev:

Visa hela koden du har nu. :)

här kommer den
/ptr

PS. har inte fått "reset-knappen" funka

ptr_lksMedlem sedan juni 2005584 inlägg
#30

reset-knappen

Hej,
ff ger

Fel: invalid assignment left-hand side
Källkodsfil: file:///C:/Mina_projekt/JacaScript/sushi1.html
Rad: 1, kolumn: 120
Källkod:
objForm.sushi.value && objForm.lx.value && objForm.tf.value && objForm.re.value && objForm.ks.value && objForm.av.value =

koden ser ut som följer

<input name="reset" type="button" onClick="objForm.sushi.value && objForm.lx.value && objForm.tf.value && objForm.re.value && objForm.ks.value && objForm.av.value =""" value="Rensa">

tack för ordet
/ptr

Peter SMedlem sedan dec. 20025 483 inlägg
#31
&& -> =

och

="" -> =''
ptr_lksMedlem sedan juni 2005584 inlägg
#32

Peter S skrev:

&& -> =

och

="" -> =''

menar du att jag skall ersätta dubbelfjuttarna med enkelfjuttar?

Peter SMedlem sedan dec. 20025 483 inlägg
#33

Ja :)

ptr_lksMedlem sedan juni 2005584 inlägg
#34

Peter S skrev:

Ja :)

har bytt ut && -> &
och ersatt till enkelfjuttar

<input name="reset" type="button" onClick="objForm.sushi.value & objForm.lx.value & objForm.tf.value & objForm.re.value &objForm.ks.value & objForm.av.value =''" value="Rensa">

fortfarande samma fel

Peter SMedlem sedan dec. 20025 483 inlägg
#35

För att citera mig själv:

Peter S skrev:

&& -> =

ptr_lksMedlem sedan juni 2005584 inlägg
#36

Peter S skrev:

För att citera mig själv:

jag trodde att det räcker med att skriva och :q
dessutom var jag tvungen att ersätta

objForm => this.Form
Peter SMedlem sedan dec. 20025 483 inlägg
#37

&& är en logisk operator som returnerar sant eller falskt. Den kan du inte använda i tilldelningar på det viset.

Ang. ersättningen; om inte objForm innehåller en referens till this.form så måste du göra som du gjort.

ptr_lksMedlem sedan juni 2005584 inlägg
#38

Palle skrev:

Nej.. asså endast i formuläret använder jag this.form i funktionsanropet.
Det fungerar inte att använda this.form innuti en funktion, det måste användas
innuti ett formulär för att tala om att det är detta formulär som gäller. :)

Om jag inte kan använda funktion, skall jag då använda:

onclick="this.form.textnamn.value=..."
Peter SMedlem sedan dec. 20025 483 inlägg
#39

Alldeles riktigt.

ptr_lksMedlem sedan juni 2005584 inlägg
#40

Tack för all hjälp...
Bifogar det färdiga och fungerande skriptet

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