Hoi Jan,
Hé, nu zie ik dat mijn bericht van eergisteren niet is doorgekomen.
Dat luidde ongeveer als volgt:
Puf-puf!

Op het oog een simpele formule: "wattage = lengte x breedte x hoogte x factor".
Maar je staat er versteld van, wat er allemaal mis kan gaan als je dit als invulvakjes op een webpagina wilt zetten!
- Wordt vervolgd!
=======
Hier het vervolg!
Uit de ambachtelijke werkplaats een testpagina:
Test wattage berekenen.
- In broncode van de pagina zelf staat de html voor het "formulier" met de invulvakjes en de Bereken-knop.
- Bijbehorend: het stylesheet wattage-berekenen.css.
De link naar het stylesheet moet in de <head> van de pagina komen.
- Bijbehorend: het javascript wattage-berekenen.js.
De link naar dit javascript moet helemaal aan het end van de pagina komen, vlak voor het einde </body></html>.
- Het is valid html4.01.
- Het is valid css2.1.
Nu mag je (en alle andere bezoekers van dit topic):
- Controleren of alle berekeningen goed gaan.
- Proberen het formulier kapot te krijgen door verkeerde waarden in te vullen.
=======
Toelichting
Het duidelijkst voor de bezoekers lijkt me een opgave van de meters en centimeters in aparte vakjes.
Dat is eenvoudiger invullen dan met honderdtallen (als alles in cm opgegeven moet worden) of als er komma's in gezet moeten worden na de meters.
Voor de gebruiksvriendelijkheid en mogelijke foutieve invullingen heb ik de volgende voorzieningen getroffen.
Scenario 1
De bezoeker heeft javascript uit staan > er kan geen berekening plaatsvinden.
Oplossing: bezoeker vragen javascript aan te zetten (
test: mededeling als javascript uit staat).
Scenario 2
Iemand heeft een kamer berekend, en de uitkomst staat op scherm. Hij verandert in de invulvakjes de maten voor een volgende ruimte, maar heeft het nieuwe wattage nog niet berekend. Daar gaat de telefoon! Hij komt terug en noteert het wattage > maar dat was nog het wattage van de oude ruimte!
Oplossing: bij opgeven van een nieuwe maat of ander type moet de uitkomst meteen gewist worden.
Scenario 3
Iemand heeft een ruimte berekend en wil de volgende gaan doen. Hij geeft een gewone refresh ("Pagina vernieuwen") > dan blijven standaard de met javascript ingevulde waarden van de variabelen staan.
Oplossing: bij een refresh moet alles gereset worden.
Scenario 4
Iemand heeft de maten goed ingevuld, maar dan wordt van boven geroepen: "Nee, dit was niet de kleine slaapkamer maar de studeerkamer!".
Oplossing: bij alleen wijziging van het type moet wel de uitkomst gewist worden, maar niet de gegevens.
Scenario 5
Iemand heeft de maten al ingevuld, maar dan roept iemand vanuit de slaapkamer: "De hoogte is geen 2m50 zoals in de woonkamer, maar slechts 2m30!"
Oplossing: bij tussentijdse wijziging van één maat moeten de andere ingevulde gegevens blijven staan (uitkomst moet wel gewist worden en er moet wel herberekend worden).
Scenario 6
Iemand vult "3m" (met de "m" van meter erbij) en "45cm" voor de centimeters in. Of iemand vult bij meters meteen "3,75" in > Dan kan javascript geen berekening uitvoeren, want het zijn geen getallen meer.
Oplossing: als geen getal is ingevuld, moet het invullen gestopt worden en de bezoeker gewaarschuwd worden, zodat deze het kan aanpassen.
Scenario 7
Iemand is erg precies, en vult bij de centimeters "5,3" in > Javascript kent de Amerikaanse notatie voor getallen: met een punt ipv onze komma > dan is het geen getal meer > berekening kan niet uitgevoerd worden.
Oplossing: onmogelijk maken en bezoeker waarschuwen.
Scenario 8
Iemand weet de Amerikaanse getallen-notatie, en vult voor meters "3.75" in > Javascript gaat nu wel berekenen, maar de bezoeker is het overzicht kwijt als ook nog iets voor de cm erachter is ingevuld.
Oplossing: ook de punt onmogelijk maken en bezoeker waarschuwen.
Scenario 9
De ene bezoeker zal bij bv. een lengte van 3m07 voor de centimeters "7" invullen, en een andere bezoeker "07" (met voorloop-nul).
Oplossing: dit moet allebei mogelijk zijn.
Scenario 10
Iemand vult alleen de maten in cm's in en geen meters (bv. "307" in het cm-vakje), of wel meters maar ook een aantal cm boven de 99. > Dan kan de berekening niet gemaakt worden.
Oplossing: dergelijke invulling onmogelijk maken en bezoeker waarschuwen.
Scenario 11
Iemand vult ergens meer dan 99 meter in. Dat is duidelijk te groot voor een woonhuis!
Oplossing: dergelijke invulling onmogelijk maken en bezoeker waarschuwen.
Scenario 12
Iemand vult ergens allen het cm-vakje in. Dat is duidelijk te klein voor een kamer!
Oplossing: dergelijke invulling onmogelijk maken en bezoeker waarschuwen.
Scenario 13
Iemand vult ergens alleen de meters in, omdat de ruimte toevallig op een heel aantal meters uitkomt, en vult geen cm in. Iemand anders vult in hetzelfde geval "0" of "00" voor de cm in.
Oplossing: moet allemaal kunnen. Voor de duidelijkheid wordt bij géén opgegeven aantal cm automatisch "00" in het cm-vakje ingevuld als de berekening gemaakt wordt.
- In het javascript-bestandje staat in grote lijnen de toelichting van hoe dit gerealiseerd is.
=======
Zoiets?
Met vriendelijke groet,
CSShunter