webForumDet fria alternativet

inget händer vid knapptryckning

39 svar · 1 133 visningar · startad av ptr_lks

ptr_lksMedlem sedan juni 2005584 inlägg
#1

Hej,
undrar vilket fel jag gjort vid kodning nu då :q :q , eftersom inget händer

<head>
<title>Sushi</title>
<script language="javascript">
var f = document.sushi;
var lkal = ((132.2*46)/100);
var lfett = ((4,83*46)/100);
</script>
</head>

<body>
<h2><strong>Omvandla Sushi bitar till points</strong></h2>
<form id="form1" name="sushi" method="post" action="">
<table width="331" border="0">
  <tr>
    <td><input name="lax" type="text" size="5">&nbsp;bit&nbsp;Lax sushi</td>
    <td><input name="laxknp" type="button" onClick= "f.laxpts.value =((f.lax.value*(lkal + lfett))" value="ger"></td>
	<td><input name="laxpts" type="text" size="5">&nbsp;points
  </tr>
</table>

</form>
</body>
</html>

Tack för ordet
/ptr

PalleMedlem sedan apr. 20003 174 inlägg
#2

Du har missat lite tecken lite här och var. :)
Testa att göra det till en funktion istället, ex:

<html>
<head>

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

</head>
<body>

<h2><strong>Omvandla Sushi bitar till points</strong></h2>
<form id="sushi" name="sushi" method="post" action="">
<table width="331" border="0">
  <tr>
    <td><input name="lax" type="text" size="5">&nbsp;bit&nbsp;Lax sushi</td>
    <td><input name="laxknp" type="button" onClick= "fCalculate();" value="ger"></td>
	<td><input name="laxpts" type="text" size="5">&nbsp;points
  </tr>
</table>

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

Palle skrev:

Du har missat lite tecken lite här och var. :)
Testa att göra det till en funktion istället, ex:

<html>
<head>

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

</head>
<body>

<h2><strong>Omvandla Sushi bitar till points</strong></h2>
<form id="sushi" name="sushi" method="post" action="">
<table width="331" border="0">
  <tr>
    <td><input name="lax" type="text" size="5">&nbsp;bit&nbsp;Lax sushi</td>
    <td><input name="laxknp" type="button" onClick= "fCalculate();" value="ger"></td>
	<td><input name="laxpts" type="text" size="5">&nbsp;points
  </tr>
</table>

</form>
</body>
</html>

tack för det, men det kommer komma flera beräkningar, skall jag då göra en funktion för alla?
Och villka andra missar har jag gjort?

PalleMedlem sedan apr. 20003 174 inlägg
#4

Ska alla ligga i samma formulär eller är det olika?

ptr_lks skrev:

Och villka andra missar har jag gjort?

Du borde få ett JS-fel på sidan, b.la då du missat en ) i onclick-eventet på knappen.

ptr_lksMedlem sedan juni 2005584 inlägg
#5

Palle skrev:

Ska alla ligga i samma formulär eller är det olika?

Du borde få ett JS-fel på sidan, b.la då du missat en ) i onclick-eventet på knappen.

det är det lustiga, att jag itne får ngt fel mess..

PalleMedlem sedan apr. 20003 174 inlägg
#6

ptr_lks skrev:

det är det lustiga, att jag itne får ngt fel mess..

Jag får:

Error Console skrev:

Error: missing ) in parenthetical
Source code:
f.laxpts.value =((f.lax.value*(lkal + lfett))

ptr_lksMedlem sedan juni 2005584 inlägg
#7

hur fick du fram detta?
och hur många paranteser bör det vara?

tack för ordet
/ptr

PalleMedlem sedan apr. 20003 174 inlägg
#8

Jag använder Firefox. ;)
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5

Den har mycket bättre Error-handling än IE och man kan enkelt se vad som är fel i ex. Javascriptet..

PalleMedlem sedan apr. 20003 174 inlägg
#9

Det ska vara lika många omvända parenteser. ;)

Är det 3 st ( så ska det vara 3 st ) också, ex.

f.laxpts.value =((f.lax.value*(lkal + lfett)))
@ndersMedlem sedan juni 200032 969 inlägg
#10

Men man måste ju inte slänga in en massa onödiga parenteser.
Har de yttersta parenteserna något syfte?

Slänger man in en massa onödiga parenteser och dylikt överallt är det klart att man får problem när man gör koden svårläst och otydlig.

mvh

ptr_lksMedlem sedan juni 2005584 inlägg
#11

@nders skrev:

Men man måste ju inte slänga in en massa onödiga parenteser.
Har de yttersta parenteserna något syfte?

Slänger man in en massa onödiga parenteser och dylikt överallt är det klart att man får problem när man gör koden svårläst och otydlig.

mvh

får varken att funka med:

onClick= "f.laxpts.value = f.lax.value*(lkal + lfett)"

eller

onClick= "f.laxpts.value = (f.lax.value*(lkal + lfett))"
PalleMedlem sedan apr. 20003 174 inlägg
#12
 onClick="this.form.laxpts.value=(this.form.lax.value*(lkal+lfett));"
ptr_lksMedlem sedan juni 2005584 inlägg
#13

Palle skrev:

Jag använder Firefox. ;)
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5

Den har mycket bättre Error-handling än IE och man kan enkelt se vad som är fel i ex. Javascriptet..

Om jag kör FF får jag

f has no properties line 1

rad 1 har jag head taggen..

PalleMedlem sedan apr. 20003 174 inlägg
#14

..rad 1 i ditt JavaScript.

f sätts aldrig varpå resten av scriptet slutar att fungera.
Testa min senaste variant. :)

ptr_lksMedlem sedan juni 2005584 inlägg
#15

Palle skrev:

 onClick="this.form.laxpts.value=(this.form.lax.value*(lkal+lfett));"

tack Palle, men 2 nya saker som jag itne fattar:

  1. när skall jag använda

this.form

och när använda

f = document.formnanmn

Jag menar jag har ett exempel som funkar med en annan konstruktion - se bifigad
2)skall onClick alltid avslutas med ; innan situationstecknet?

Tack för ordet
/ptr

ptr_lksMedlem sedan juni 2005584 inlägg
#16

dvs för att förtydliga:
varför funkar det ena (fungerande_ex) och inte den andra (ej_fungerande_ex)

PalleMedlem sedan apr. 20003 174 inlägg
#17

1. this.form kan du använda innuti ett formulär för att tala om att det är just detta formulär, och elementen i formuläret, som gäller som referens i anropet.

2. Nja, igentligen Ja. Men det är inget blodigt tvång. ;) Men mig veteligen så är det korrekt syntax att göra så.

PalleMedlem sedan apr. 20003 174 inlägg
#18

Anledningen till att ej_fungerande_ex inte fungerar är att du sätter referensen (var f = document.sushi;) innan elementet du refererar till (document.sushi) har skrivits ut till klienten.

För att du skall kunna använda detta måste du antingen lägga koden som sätter referensen i en funktion, eller lägga den efter det att elementet skrivts till klienten.

ptr_lksMedlem sedan juni 2005584 inlägg
#19

Palle skrev:

Anledningen till att ej_fungerande_ex inte fungerar är att du sätter referensen (var f = document.sushi;) innan elementet du refererar till (document.sushi) har skrivits ut till klienten.

För att du skall kunna använda detta måste du antingen lägga koden som sätter referensen i en funktion, eller lägga den efter det att elementet skrivts till klienten.

Tack Palle, men:

  1. finns det fördelar med detta?
  2. vilken av varienterna är enklast och mest basic? Kursen jag går har vi blivit uppmanade att skriva så enkla och basic code som möjligt
PalleMedlem sedan apr. 20003 174 inlägg
#20

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.

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