Hulp nodig bij Javascript

Status
Niet open voor verdere reacties.

regenTon

Gebruiker
Lid geworden
6 mei 2015
Berichten
33
Beste allemaal,

Zelf weet ik niets van Javascript, vandaar mijn vraag aan jullie.

Ik heb uit Amerika een werken script ontvangen, echter dit script rekent e.e.a. uit na "onsubmit".
Liever had ik een script wat direct bij ingave van variabele rekent.
Misschien dat iemand mijn kan helpen, alvast bedankt.

Script:
--------------------------------------------
<SCRIPT LANGUAGE="JavaScript">
function calculate()
{
var v_Werkuren = parseFloat(document.getElementById("InsertRecordWerkuren").value);
var v_DWM_uren = parseFloat(document.getElementById("InsertRecorddwmuren").value);
var v_55_uren = parseFloat(document.getElementById("InsertRecorduren55").value);
var v_Ziekte_uren = parseFloat(document.getElementById("InsertRecordziekteuren").value);
var v_Scholingsuren = parseFloat(document.getElementById("InsertRecordschooluren").value);
var v_Onbetaalde_uren = parseFloat(document.getElementById("InsertRecordonbeturen").value);
var v_totaaluren = v_Werkuren + v_DWM_uren + v_55_uren + v_Ziekte_uren + v_Scholingsuren + v_Onbetaalde_uren;
document.getElementById("InsertRecordtotaaluren").value = v_totaaluren;
}
document.getElementById("caspioform").onsubmit=calculate;
</SCRIPT>
 
Dag regenton,

misschien dat dit werkt:

[js]
function calculate()
{
//onderstaande voor alle invoervelden doorvoeren:
var vw = document.getElementById("InsertRecordWerkuren").value;
//hier kijk je mee of het veld wel een waarde heeft. Zo niet wordt de waarde 0
//gegeven zodat bij elke aanroep van de functie de waarde berekend kan worden
var v_Werkuren = (vw == '' || parseFloat(vw) == NaN) ? 0 : parseFloat(vw);
//enz...

var v_DWM_uren = parseFloat(document.getElementById("InsertRecorddwmuren").value);
var v_55_uren = parseFloat(document.getElementById("InsertRecorduren55").value);
var v_Ziekte_uren = parseFloat(document.getElementById("InsertRecordziekteuren").value);
var v_Scholingsuren = parseFloat(document.getElementById("InsertRecordschooluren").value);
var v_Onbetaalde_uren = parseFloat(document.getElementById("InsertRecordonbeturen").value);
//tot hier omvormen naar bovenstaand voorbeeld

var v_totaaluren = v_Werkuren + v_DWM_uren + v_55_uren + v_Ziekte_uren + v_Scholingsuren + v_Onbetaalde_uren;
document.getElementById("InsertRecordtotaaluren").value = v_totaaluren;
}

//dan voor het initialiseren van het optelproces
//geef de invoervelden (html) de class "invoervelden"
//en doorloop alle velden met deze klasse om een eventlistener te koppelen
function Init() {
var invoervelden = document.getElementsByClassName("invoervelden");
var lengte = invoervelden.length;
for(var i = 0; i < lengte; i++) {
var veld = invoervelden;
EventToevoegen(veld, change, calculate);
}
}

function EventToevoegen(eventObj, event, eventHandler) {
if(eventObj.addEventListener) {
eventObj.addEventListener(event, eventHandler, false);
} else if(eventObj.attachEvent) {
event = 'on' + event;
eventObj.attachEvent(event, eventHandler);
} else {
event = 'on' + event;
eventObj.event = eventHandler;
}
}
//en tot slot de aanroep die de boel start
EventToevoegen(window, "load", Init);
[/js]

eventueel in plaats van 'change' in de EventToevoegen parameters 'blur' gebruiken.

Ik hoop dat je er iets aan hebt.
oh, in IE werkt getElementsByClassName niet. In dat geval kun je ook getElementsByTagName gebruiken.

Vriendelijke groet,
Arjan.
 
Laatst bewerkt:
getElementsByClassName zou moeten werken vanaf ie9.
Code:
var invoervelden = document.getElementsByClassName("invoervelden");
 
Beste Regenton,

je vraagt hulp voor een specifiek probleem en omdat je zelf geen ervaring hebt met javascript. Okee, dat kan. Maar ik heb je pagina bekeken en krijg de indruk dat je ook geen idee hebt van het maken van een HTML-pagina.
Om te beginnen hoort javascriptcode (uitzonderingen daargelaten) thuis in de header van je document. Nu staan overal en nergens code en verwijzingen naar code. Dat gaat niet werken.
Ten tweede vraag ik me af wat je hoopt te bereiken met de pagina (zit er een database achter, gebruik je serverside scripts zoals php?)
Ten derde is het zeer af te raden om een site (en dan heb ik het puur over de html) op deze manier te bouwen. De code staat bol van de stijlregels en is ook nog eens gebaseerd op een paginaopbouw met tabellen. Dit is echt niet te onderhouden. Ik heb er zelfs moeite mee om de simpelste elementen terug te vinden.
Tot slot vind ik het jammer dat je blijkbaar niet eens de moeite hebt genomen om te kijken naar mijn oplossing. Je hebt deze gewoon geknipt en geplakt; hij wordt als kale tekst in een van de cellen getoond. Als je even had gelezen dan had je in ieder geval gezien dat je zelf ook nog iets moest doen.

Denk eerst eens goed na over wat je wilt.
Denk dan na over hoeveel moeite je daar zelf voor wilt doen. Als het antwoord daarop is: zo weinig mogelijk, dan kunnen we vast wel een prijs afspreken voor het realiseren van je wensen. Als het antwoord is: maar ik wil graag leren hoe ik zoiets moet doen: koop dan eerst een goed boek (of zoek op internet naar een goede tutorial) over HTML5, ga ermee aan de slag en als je tegen problemen aanloopt zijn er hier voldoende mensen die je willen helpen.

Met vriendelijke groet,

Arjan.
 
Hi RegenTon, je kennis kan ik niet goed inschatten maar een leertraject ziet er zo uit.
Begin met HTML 5 (de structuur) en basis CSS (de opmaak). Daarna kan je de CSS kennis verder uitbreiden met CSS 3. Gebruik hiervoor recente tutorials en/of boeken. Dit zie je snel aan de eerste regel van de html, die moet eruit zien als <!DOCTYPE html> en alle css staat in principe in een apart .css bestand (de stylesheet).
Voor meer functionaliteit kan je daarna aan de slag met Javascript (scripting aan browserzijde) of PHP (scripting aan serverzijde).

Suc6 met je website (en mogelijke leertraject).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan