Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
190
rated 0 times [  191] [ 1]  / answers: 1 / hits: 35173  / 13 Years ago, wed, september 7, 2011, 12:00:00

What I want to do is have numbers inputted by user and the sum of the numbers returned. My logic is as follows:




  1. User inputs string

  2. String is split to array

  3. Loop through array and sum all numbers

  4. Return sum



And here is the code I have so far:



<script type='text/javascript'>

var val=document.getElementById('userInput').value;
var temp=val.split( );

function sum() {
for(var i=0, MISSING THIS BIT

document.getElementById('resultSum').innerHTML=MISSING THIS BIT;
}

</script>

<form name=input>
<textarea name=userInput rows=20 cols=20></textarea>
<input name=Run type=Button value=run onClick=sum()>
<form name=resultSum><input type=Text>


I admit with humility that this is mostly probably wrong and appreciate anybody's time and effort.






UPDATE: I have done as suggested and I get the following error on my code below:




Message: 'document.getElementById(...)' is null or not an object Line:
16 Char: 1 Code: 0




<html>

<script type='text/javascript'>

function sum(){
var val = document.getElementById('userInput').value;
var temp = val.split( );

var total = 0;
var v;
for(var i = 0; i < temp.length; i++) {
v = parseFloat(temp[i]);
if (!isNaN(v)) total += v;
}

document.getElementById('resultSum').innerHTML=total;

}

</script>

<form name=input>
<textarea name=userInput rows=20 cols=20></textarea>
<input name=Run type=Button value=run onClick=sum()>
<form name=resultSum><input type=text>
<html>


Any suggestions? Thanks to all for being comprehensive - I have read both examples and understand the process now!


More From » arrays

 Answers
46

You want a basic loop to convert and add each item.



I have also cleaned up your HTML a ton. You didn't have any proper closing tags. I have also changed all of the 'name' attributes to 'id' attributes so that 'getElementById' would work properly, which I missed on my first pass.



<html>
<head>
<script type='text/javascript'>
function sum(){
var val = document.getElementById('userInput').value;
var temp = val.split( );
var total = 0;
var v;
for(var i = 0; i < temp.length; i++) {
v = parseFloat(temp[i]);
if (!isNaN(v)) total += v;
}
document.getElementById('resultSumValue').value = total;
}
</script>
</head>
<body>
<form id=input>
<textarea id=userInput rows=20 cols=20></textarea>
<input id=Run type=Button value=run onClick=sum() />
</form>

<form id=resultSum>
<input id=resultSumValue type=text />
</form>
</body>
</html>


This will also ignore any values that are 'NaN' (Not a Number).



If you want the numbers to only be integers (no decimals), change parseFloat to parseInt.


[#90232] Monday, September 5, 2011, 13 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
yaquelina

Total Points: 517
Total Questions: 101
Total Answers: 96

Location: Egypt
Member since Tue, Jul 6, 2021
3 Years ago
yaquelina questions
;