<script type="text/javascript">
//<![CDATA[
function PainoIndeksi(form) {
// Luodaan virheviesti siltä varalta ettei
// laskutoimitusta voida tai ei ole mielekästä suorittaa:
var Virhesanoma = "Komputointi ei onnistu näillä tiedoilla.";
// Sijoitetaan hieman useasti käytettyä
// tekstiä Tulostekstia -nimiseen muuttujaan:
var Tulostekstia = "Tulos viittaa ";
// Haetaan pituuden arvo lomakkeen tekstikentästä
// ja sijoitetaan se Pit-muuttujaan:
var Pit = document.forms.PI.Pituus.value;
// Vastaava painon kanssa:
var Pai = document.forms.PI.Paino.value;
// Luodaan rutiinit, jotka tarvittaessa muuttavat
// käyttäjän syöttämän arvojen pilkun pisteeksi:
var apumuuttuja = "";//alustetaan apumuuttuja
//suoritetaan silmukka:
for(var i=0;i<Pit.length;i+=1) {
//kunnes arvon kaikki merkit on käyty läpi:
var Merkki = Pit.charAt(i);
if (Merkki == ',') {//jos merkki on pilkku
Merkki = '.';//muutetaan se pisteeksi
}
apumuuttuja += Merkki;//kasataan merkit takaisin apumuuttujaan
}
//sijoitettan mahdollisesti muuttunut arvo ao. muuttujaan:
Pit = apumuuttuja;
// Sama rutiini toiselle syötteelle:
var apumuuttuja2 = "";
for(i=0;i<Pai.length;i+=1) {
var Merkki2 = Pai.charAt(i);
if (Merkki2 == ',') {
Merkki2 = '.';
}
apumuuttuja2 += Merkki2;
}
Pai = apumuuttuja2;
// Sijoitetaan indeksiarvon laskevan kaavan
// tulos Indeksi-muuttujaan:
var Indeksi = Pai / (Pit * Pit);
// Valitaan jotkut virheentarkistusarvot, joiden
// puitteisiin pituuden ja painon tulisi sijoittua:
var Virhe = ((Pit < 1 || Pit > 3) || (Pai < 30 || Pai > 300));
// Vihelletään peli poikki, mikäli pituus- ja/tai
// painoarvot ovat epäkelpoja:
if ((Virhe) || (isNaN(Indeksi))) {
window.alert(Virhesanoma);
}
// Muuten esitetään laskukaavan tulos:
else {
// Ensin numeroina, jotka
// pyöristetään kahteen desimaaliin:
function Pyorista(luku,desit) {
desit = (!desit?2:desit);
return Math.round(luku*Math.pow(10,desit))/Math.pow(10,desit);
}
document.forms.PI.Numeroina.value = Pyorista(Indeksi);
// Sitten lukuarvoa vastaavana tekstinä:
var Teksti=document.forms.PI.Tekstina;
if (Indeksi > 40) {
Teksti.value=Tulostekstia+"sairaallolliseen ylipainoon.";
}
else if (Indeksi > 35) {
Teksti.value=Tulostekstia+"vaikeaan ylipainoon.";
}
else if (Indeksi > 30) {
Teksti.value=Tulostekstia+"merkittävään ylipainoon.";
}
else if (Indeksi > 25) {
Teksti.value=Tulostekstia+"lievään ylipainoon.";
}
else if (Indeksi > 18.5) {
Teksti.value=Tulostekstia+"ihannepainoon.";
}
else {
Teksti.value=Tulostekstia+"alipainoon.";
}
}
}
//]]>
</script>
<form action="" id="PI" name="PI">
<table border="1" cellspacing="2" cellpadding="2">
<caption>Lomakkeella lasketaan aikuisen henkilön pituuden
ja painon mukainen painoindeksi.</caption>
<tr>
<td>
<label for="Pituus">Syötä pituutesi metreinä:</label>
</td>
<td>
<input size="6" value="" name="Pituus" id="Pituus" /> (esim. <kbd>1,91</kbd>)
</td>
</tr>
<tr>
<td>
<label for="Paino">Syötä painosi kiloina:</label>
</td>
<td>
<input size="6" value="" name="Paino" id="Paino" /> (esim. <kbd>81,5</kbd>)
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="button" value="Laske painoindeksi" onclick="PainoIndeksi(this.form)" />
</td>
</tr>
<tr>
<td>
Painoindeksisi on:
</td>
<td>
<input size="6" value="" name="Numeroina" />
</td>
</tr>
<tr>
<td colspan="2">
<input name="Tekstina" size="60" />
</td>
</tr>
<tr>
<td align="right" colspan="2">
<input type="reset" value="Tyhjennä kentät" />
</td>
</tr>
</table>
</form>
Tämä sivu kuuluu vaikeimpiin JavaScript-esimerkkeihin.