admin管理员组

文章数量:1302902

I am trying to make a simple html page with two text boxes and an a button that adds the two numbers together when clicked. In my output, I am only getting [object HTMLInputElement].

function addNumbers(A, B){
  var answer = A + B;
  document.getElementById("testResult").innerHTML = answer;
}
<input type="text" value="15" id="varA">
<input type="text" value="30" id="varB">
<input type="button" value="Add" onclick="addNumbers(varA, varB)">
<h1 id="testResult"></h1>

I am trying to make a simple html page with two text boxes and an a button that adds the two numbers together when clicked. In my output, I am only getting [object HTMLInputElement].

function addNumbers(A, B){
  var answer = A + B;
  document.getElementById("testResult").innerHTML = answer;
}
<input type="text" value="15" id="varA">
<input type="text" value="30" id="varB">
<input type="button" value="Add" onclick="addNumbers(varA, varB)">
<h1 id="testResult"></h1>

Any help would be appreciated. I tried changing .innerHTML to .value already but then I get nothing at all as a result.

Share Improve this question edited Oct 5, 2014 at 18:49 Oriol 289k70 gold badges457 silver badges530 bronze badges asked Oct 5, 2014 at 18:09 XfmymXfmym 111 gold badge1 silver badge1 bronze badge 2
  • 4 varA is the input element, not its value, which would be varA.value. However, you're going to need to change that to a number before adding it together, or else you'll end up with string concatenation. – user663031 Commented Oct 5, 2014 at 18:12
  • Note input elements have no content, so you can use <input ...> or <input ... />, but not <input ...></input>. – Oriol Commented Oct 5, 2014 at 18:50
Add a ment  | 

2 Answers 2

Reset to default 2

I assume you want the mathematical sum and not the string concatenation. If that's the case, you can use the following:

UPDATE based on ment:

function addNumbers(elem1, elem2) {
  var a = document.getElementById(elem1).value;
  var b = document.getElementById(elem2).value;
  var c = Number(a) + Number(b);
  document.getElementById("testResult").innerHTML = c;
}
<input type="text" value="15" id="varA">
<input type="text" value="30" id="varB">
<input type="button" value="Add" onclick="addNumbers('varA', 'varB')"></input>
<h1 id="testResult"></h1>

Here's a working Fiddle: http://jsfiddle/JohnnyEstilles/ex09fx7k/.

Some fixes:

  • You are adding up the inputs elements instead of their value.
  • To convert its string value to a number, you can use unary +.
  • Instead of inline event listeners, better use addEventListener.

var a = document.getElementById('varA'),
    b = document.getElementById('varB'),
    result = document.getElementById("testResult");

document.getElementById('add').addEventListener('click', function() {
  addNumbers(a.value, b.value);
});

function addNumbers(n1, n2){
  result.textContent = +n1 + +n2;
}
<input type="text" value="15" id="varA">
<input type="text" value="30" id="varB">
<input type="button" id="add" value="Add">
<h1 id="testResult"></h1>

本文标签: HTML javascript function issue object HTMLInputElement error outputStack Overflow