Javascript waarden uit velden optellen

Status
Niet open voor verdere reacties.

Javascript1

Nieuwe gebruiker
Lid geworden
29 apr 2009
Berichten
1
Ik heb hier een javascriptje daar heb ik een vraag over. Met dit script kan ik waarden optellen uit velden van mijn tabel en dat laten weergeven in een totaalveld. Het probleem is dat ik graag meerdere totalen wil tonen, maar niet steeds (zoals hieronder) het script wil gaan herhalen. Is er misschien een manier om ervoor te zorgen dat er 1 script uitkomt, maar dat er wel meerdere totalen weergegeven kunnen worden?
PHP:
<script type="text/javascript">
function telopdrachtgever()
{	
  var sum = 0;
  var inputs = document.getElementsByTagName("input");
  for (i =0; i < inputs.length; i++)
  {
    if (!inputs[i].type || inputs[i].type != "text")
    {
      continue;  //negeer alle elementen zonder type attribuut of niet text inputs.
    }
    if (!inputs[i].name || !inputs[i].name.match(/^opdrachtgever\(\d+\)$/))
    {
      continue; //negeer alle elementen zonder name attribuut, de regex snap je wel neem ik aan.
    }
    if( inputs[i].value.match( /^\d+$/))
    {
      sum += parseInt(inputs[i].value, 10);
    }
    else
    {
      document.getElementById("totaalopdrachtgever").value = "Voer alleen getallen in!";
      return;
    }
  }
  document.getElementById("totaalopdrachtgever").value = sum;
}


function teloverwerk_opdracht()
{	
  var sum = 0;
  var inputs = document.getElementsByTagName("input");
  for (i =0; i < inputs.length; i++)
  {
    if (!inputs[i].type || inputs[i].type != "text")
    {
      continue;  //negeer alle elementen zonder type attribuut of niet text inputs.
    }
    if (!inputs[i].name || !inputs[i].name.match(/^overwerk_opdracht\(\d+\)$/))
    {
      continue; //negeer alle elementen zonder name attribuut, de regex snap je wel neem ik aan.
    }
    if( inputs[i].value.match( /^\d+$/))
    {
      sum += parseInt(inputs[i].value, 10);
    }
    else
    {
      document.getElementById("totaaloverwerk_opdracht").value = "Voer alleen getallen in!";
      return;
    }
  }
  document.getElementById("totaaloverwerk_opdracht").value = sum;
}
</script>
Alvast bedankt!
 
Laatst bewerkt door een moderator:
Bedoel je zo iets? geef het bestemmings veld op (de NAME) en geeft velden op die je wilt optellen (ook NAME)
Code:
/**
 * Usage:
 * addFieldValues('outputfieldname', ['tobeaddedfieldname1','tobeaddedfieldname2']);
 *
 * @param string output
 * @param array input
 * @param string formname Optional
 */
function addFieldValues(output, input, formname) {
	if (formname == null) {
		formname = 0;
	}
	var sum = 0;
	for (var i=0; i< input.length; i++) {
		sum += parseInt(document.forms[formname][input[i]].value, 10);
	}

	document.forms[formname][output].value = sum;
}


Hier een voorbeeldje van html. Hij heeft 3 velden waarvan 2 bij elkaar worden opgeteld en in het derde veld gezet wordt bij het inladen van de pagina.
HTML:
<html>
	<head>
		<title>test</title>
		<script type="text/javascript">
			//script hiero
			function addFieldValues(output, input, formname) {
				if (formname == null) {
					formname = 0;
				}
				var sum = 0;
				for (var i=0; i< input.length; i++) {
					sum += parseInt(document.forms[formname][input[i]].value, 10);
				}

				document.forms[formname][output].value = sum;
			}

			window.onload = function () {
var tobeadded = ['test1','test2'];
				addFieldValues('optel', tobeadded);
			}

		</script>
	</head>
	<body>
		<form>
			<input type="text" name="test1" value="2" />
			<input type="text" name="test2" value="2" />
			<input type="text" name="optel" value="" />
		</form>
	</body>
</html>
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan