[js]knop meerdere functies uit laten voeren

Pagina: 1
Acties:

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 10:51
Mijn webpagina ziet er zo uit:
Afbeeldingslocatie: http://passion4dance.nl/fboek/albums/userpics/image002.jpg
Ik heb nu in de onderste form zelf een controle ingevuld, maar ik wil eigenlijk dat in het linkerrijtje de waarden uit de bovenste form ingevuld worden als ik op de knop "controleer volume" druk.

Nu heb ik:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<form name="milliliters">
<table border="1" width="100%">
<tr><td width="20%"><b>Chargenummer</b></td><td><b>Preparaat</b></td><td><b>Aantal ml</b></td></tr>
<tr><td>&nbsp</td><td>NuTRIflex Lipid Special</td><td><input type="text" name="nutriflex" size="4" maxlength="4" /></td></tr>
<tr><td>&nbsp</td><td>KCl inj. 10 ml = 20 mmol K, 20 mmol Cl</td><td><input type="text" name="kcl" size="4" maxlength="4" /></td></tr>
<tr><td>&nbsp</td><td>NaCl inj. 10 ml = 50 mmol Na, 50 mmol Cl</td><td><input type="text" name="nacl" size="4" maxlength="4" /></td></tr>
<tr><td>&nbsp</td><td>K<sub>2</sub>HPO<sub>4</sub> inj. 10 ml = 20 mmol K, 10 ml = 10 mmol PO<sub>4</sub></f></td><td><input type="text" name="fosfaat" size="4" maxlength="4" /></td></tr>
<tr><td>&nbsp</td><td>Ca Sandoz 10 ml = 2,25 mmol Ca</td><td><input type="text" name="calcium" size="4" maxlength="4" /></td></tr>
<tr><td>&nbsp</td><td>Cernevit inj</td><td><input type="text" name="cernevit" size="4" maxlength="4" /></td></tr>
<tr><td>&nbsp</td><td>MgSO<sub>4</sub> inj. 10 ml = 4,06 mmol</td><td><input type="text" name="magnesium" size="4" maxlength="4" /></td></tr>
<tr><td>&nbsp</td><td>Addamel N inj. 10 ml</td><td><input type="text" name="addamel" size="4" maxlength="4" /></td></tr>
<tr><td>&nbsp</td><td>Aqua ad Injectabilia</td><td><input type="text" name="aqua" size="4" maxlength="4" /></td></tr></table>
<input type="button" name="controle" value="Controleer volume" />
<p><b>Totaal Volume: </b><input type="text" name="resultaat" maxlength=4/></p>
</form>
<script type=text/javascript>
document.milliliters.controle.onclick = function checkForm ()
{
nutriflex = parseFloat(milliliters.elements['nutriflex'].value); 
kcl = parseFloat(milliliters.elements['kcl'].value); 
nacl = parseFloat(milliliters.elements['nacl'].value); 
fosfaat = parseFloat(milliliters.elements['fosfaat'].value); 
calcium = parseFloat(milliliters.elements['calcium'].value); 
cernevit = parseFloat(milliliters.elements['cernevit'].value); 
aqua = parseFloat(milliliters.elements['aqua'].value); 
magnesium = parseFloat(milliliters.elements['magnesium'].value); 
addamel = parseFloat(milliliters.elements['addamel'].value); 
resultaat = parseFloat(milliliters.elements['resultaat'].value);
if (cernevit > 0 && aqua > 0)
    alert("Cernevit en Aqua ad Injectabillia dubbel geteld!")
else document.milliliters.resultaat.value = document.milliliters.nutriflex.value/1 + document.milliliters.kcl.value/1 + document.milliliters.nacl.value/1 + document.milliliters.fosfaat.value/1 + document.milliliters.calcium.value/1 + document.milliliters.magnesium.value/1 + document.milliliters.addamel.value/1 + document.milliliters.cernevit.value/1 + document.milliliters.aqua.value/1
}
&&
function ExportValue ()
{
kcl = parseFloat(milliliters.elements['kcl'].value);
fosfaat = parseFloat(milliliters.elements['fosfaat'].value);
nacl = parseFloat(milliliters.elements['nacl'].value);
calcium = parseFloat(milliliters.elements['calcium'].value);
magnesium = parseFloat(milliliters.elements['magnesium'].value);
nk1 = (2*=kcl + 2*=fosfaat + 5*=nacl)
}
</script>

Maar dit werkt niet. Hoe kan ik dit wel werkend krijgen? Of is het niet mogelijk om met een onclick twee functies aan te roepen?

  • arieleks
  • Registratie: September 2002
  • Laatst online: 13-08-2013
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<input type="button" value="Blaat" onclick="DoeTweeDingen()">

<script type="text/javascript">
function DoeTweeDingen() {
    DoeDing1();
    DoeDing2();
}

function DoeDing1() {
    //blaat
}

function DoeDing2() {
    //blaat
}
</script>

- Rietberg - sieben Mal sympatisch -

There are only 10 types of people, those who make stupid jokes about binary numbers and those who don't.


  • André
  • Registratie: Maart 2002
  • Laatst online: 14:48

André

Analytics dude

Niet zomaar met een &&. Maak dan 1 functie die je in de onclick plaatst en laat die weer 2 functies aanroepen.

Daarnaast kunnen een aantal zaken netter:
JavaScript:
1
document.forms["milliliters"].elements["elementnaam"].value

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 10:51
ok, hier geeft ie geen fouten meer op over die meerdere functies.
Ik krijg nu alleen geen waarden als ik mijn 2e functie (ExportValue) aanroep (de 1e werkt wel)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<script type=text/javascript>
document.milliliters.controle.onclick = function Controle ()
{
checkForm ();
ExportValue ();
}
function checkForm ()
{
nutriflex = parseFloat(milliliters.elements['nutriflex'].value); 
kcl = parseFloat(milliliters.elements['kcl'].value); 
nacl = parseFloat(milliliters.elements['nacl'].value); 
fosfaat = parseFloat(milliliters.elements['fosfaat'].value); 
calcium = parseFloat(milliliters.elements['calcium'].value); 
cernevit = parseFloat(milliliters.elements['cernevit'].value); 
aqua = parseFloat(milliliters.elements['aqua'].value); 
magnesium = parseFloat(milliliters.elements['magnesium'].value); 
addamel = parseFloat(milliliters.elements['addamel'].value); 
resultaat = parseFloat(milliliters.elements['resultaat'].value);
if (cernevit > 0 && aqua > 0)
    alert("Cernevit en Aqua ad Injectabillia dubbel geteld!")
else document.milliliters.resultaat.value = document.milliliters.nutriflex.value/1 + document.milliliters.kcl.value/1 + document.milliliters.nacl.value/1 + document.milliliters.fosfaat.value/1 + document.milliliters.calcium.value/1 + document.milliliters.magnesium.value/1 + document.milliliters.addamel.value/1 + document.milliliters.cernevit.value/1 + document.milliliters.aqua.value/1
}
function ExportValue ()
{
kcl = parseFloat(milliliters.elements['kcl'].value);
fosfaat = parseFloat(milliliters.elements['fosfaat'].value);
nacl = parseFloat(milliliters.elements['nacl'].value);
calcium = parseFloat(milliliters.elements['calcium'].value);
magnesium = parseFloat(milliliters.elements['magnesium'].value);
nk1 = (kcl + fosfaat + nacl)
}
</script>

De fout zit in de regel nk1 = (kcl + fosfaat + nacl), maar dit moet je toch gewoon zo aan kunnen roepen? Ik heb de namen zo gedefinieerd, dus volgens mij zou dat moeten kunnen. Maar ik zal wel weer iets stoms over het hoofd zien...

Verwijderd

Dit zou gewoon moeten werken, maar de velden die je optelt moeten wel verplicht ingevult worden.

Niet een puntkomma vergeten ofzo?

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 10:51
ik heb ze ingevuld en de puntkomma staat er wel achter (niet in mijn code hierboven, maar hij staat er wel)
Hij geeft geen foutmeldingen meer aan, maar geeft ook niet het resultaat van de som weer in dat invoerveld. Dus waar kan dit aan liggen?

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 10:51
ik heb het uiteindelijk voor elkaar. Ik zit nu alleen nog te klooien met afrondfouten door floating points.
Ik weet dat het via parsefloat moet, maar op de een of andere manier werkt het niet echt. Kan ik uiteindelijk een string met
result parseFloat(a) invullen en maakt ie er dan een nummer van? Of hou je dan een verkeerde waarde?

Het probleem is dat niet altijd een waarde in het form ingevuld hoeft te worden. Dus als ik de waarden allemaal een parseFloat geef, moeten ze ingevuld worden. En dat wil ik eigenlijk liever niet.
Iemand een optie?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
</script>
<p>
<form name="milliliters" action="http://127.0.0.1">
<table border="1" width="100%">
<tr><td width="20%"><b>Chargenummer</b></td><td><b>Preparaat</b></td><td><b>Aantal ml</b></td></tr>
<tr><td>&nbsp</td><td>NuTRIflex Lipid Special</td><td><input type="text" name="nutriflex" size="4" maxlength="4" /></td></tr>
<tr><td>&nbsp</td><td>KCl inj. 10 ml = 20 mmol K, 20 mmol Cl</td><td><input type="text" name="kcl" size="4" maxlength="4" /></td></tr>
<tr><td>&nbsp</td><td>NaCl inj. 10 ml = 50 mmol Na, 50 mmol Cl</td><td><input type="text" name="nacl" size="4" maxlength="4" /></td></tr>
<tr><td>&nbsp</td><td>K<sub>2</sub>HPO<sub>4</sub> inj. 10 ml = 20 mmol K, 10 ml = 10 mmol PO<sub>4</sub></td><td><input type="text" name="fosfaat" size="4" maxlength="4" /></td></tr>
<tr><td>&nbsp</td><td>Ca Sandoz 10 ml = 2,25 mmol Ca</td><td><input type="text" name="calcium" size="4" maxlength="4" /></td></tr>
<tr><td>&nbsp</td><td>Cernevit inj</td><td><input type="text" name="cernevit" size="4" maxlength="4" /></td></tr>
<tr><td>&nbsp</td><td>MgSO<sub>4</sub> inj. 10 ml = 4,06 mmol</td><td><input type="text" name="magnesium" size="4" maxlength="4" /></td></tr>
<tr><td>&nbsp</td><td>Addamel N inj. 10 ml</td><td><input type="text" name="addamel" size="4" maxlength="4" /></td></tr>
<tr><td>&nbsp</td><td>Aqua ad Injectabilia</td><td><input type="text" name="aqua" size="4" maxlength="4" /></td></tr></table>
<input type="button" name="controle" value="Controleer">
<p><b>Totaal Volume: </b><input type="text" name="resultaat"></p>
<script type="text/javascript">
document.milliliters.controle.onclick = function Controle ()
{
ExportValue ();
checkForm ();
checkControle ()
}
function checkForm ()
{
nutriflex = parseFloat(document.milliliters.elements['nutriflex'].value); 
kcl = parseFloat(document.milliliters.elements['kcl'].value); 
nacl = parseFloat(document.milliliters.elements['nacl'].value); 
fosfaat = parseFloat(document.milliliters.elements['fosfaat'].value); 
calcium = parseFloat(document.milliliters.elements['calcium'].value); 
cernevit = parseFloat(document.milliliters.elements['cernevit'].value); 
aqua = parseFloat(document.milliliters.elements['aqua'].value); 
magnesium = parseFloat(document.milliliters.elements['magnesium'].value); 
addamel = parseFloat(document.milliliters.elements['addamel'].value); 
resultaat = parseFloat(document.milliliters.elements['resultaat'].value);
if (cernevit > 0 && aqua > 0)
    alert("Cernevit en Aqua ad Injectabillia dubbel geteld!")
else document.milliliters.resultaat.value = document.milliliters.nutriflex.value/1 + document.milliliters.kcl.value/1 + document.milliliters.nacl.value/1 + document.milliliters.fosfaat.value/1 + document.milliliters.calcium.value/1 + document.milliliters.magnesium.value/1 + document.milliliters.addamel.value/1 + document.milliliters.cernevit.value/1 + document.milliliters.aqua.value/1
}
function ExportValue ()
{
kcl = parseFloat(document.forms["milliliters"].elements['kcl'].value);
fosfaat = parseFloat(document.forms["milliliters"].elements['fosfaat'].value);
nacl = parseFloat(document.forms["milliliters"].elements['nacl'].value);
calcium = parseFloat(document.forms["milliliters"].elements['calcium'].value);
magnesium = parseFloat(document.forms["milliliters"].elements['magnesium'].value);
document.milliliters.nk1.value = 2*document.milliliters.kcl.value + 5*document.milliliters.nacl.value + 2*document.milliliters.fosfaat.value
document.milliliters.calcium1.value = 0.225*document.milliliters.calcium.value
document.milliliters.magnesium1.value = 0.406*document.milliliters.magnesium.value
}
function checkControle () 
{
a = "Voldoet wel" 
b = "Voldoet niet"
c = "Geen aanpassing"
var nk = parseFloat(document.milliliters.elements['nk1'].value);
    if (nk < 232.5) 
        document.milliliters.elements['nk2'].value = a; 
    else if (nk >= 232.5) 
        document.milliliters.elements['nk2'].value = b; 
    else
        documents.milliliters.elements['nk2'].value = c; 

var calcium = parseFloat(document.milliliters.elements['calcium1'].value)
    if (calcium < 9.0)
        document.milliliters.elements['calcium2'].value = a; 
    else if (calcium >= 9.0)
        document.milliliters.elements['calcium2'].value = b;  
    else 
        document.milliliters.elements['calcium2'].value = c;

var magnesium = parseFloat(document.milliliters.elements['magnesium1'].value)
    if (magnesium < 9.0)
        document.milliliters.elements['magnesium2'].value = a; 
    else if (magnesium >= 9.0)
        document.milliliters.elements['magnesium2'].value = b;  
    else 
        document.milliliters.elements['magnesium2'].value = c;
}
</script>
<table width="100%"><tr><td width="30%">
<h5>
Bereidingsdatum:<br />
Afgiftedatum:<br />
Bereider:<br />
Omloop:
</h5></td><td width="70%">
<h5><b>Controles:</b></h5>
<p><table width="100%" >
<tr><td>Natrium + Kalium:</td><td><input type="text" name="nk1" disabled /></td><td>Maximaal 232,5 mmol</td><td><input type="text" name="nk2" disabled /></td></tr>
<tr><td>Calcium:</td><td><input type="text" name="calcium1" disabled /></td><td>Maximaal 9,0 mmol</td><td><input type="text" name="calcium2" disabled /></td></tr>
<tr><td>Magnesium:</td><td><input type="text" name="magnesium1" disabled /></td><td>Maximaal 9,0 mmol</td><td><input type="text" name="magnesium2" disabled /></td></tr>
</table></td></tr></table></form>
<p>
<h4>Paraaf Apotheker:</h4>
</body>
</html>


Ik weet dat het nog een beetje een zootje is, maar op deze manier werkt het iig. Ik ga de variabelen nog even iets beter definieren, zodat ik die kan gebruiken ipv een lange reeks van cellen bij elkaar. Maar daar zit ik toch nog in te klooien, dus doe ik het dadelijk als ik weet hoe het moet...

Edit:
Ik heb het nu werkend met behulp van Math.round(bla*100)/100 op 2 decimalen. Dus dat is prima geregeld.
Pagina: 1