Reputation: 17
I'm trying to add two numbers that are put in input fields. Then I want to display the result but the result disappears right after.
function add() {
var num1 = document.getElementById("num1").value;
var num2 = document.getElementById("num2").value;
var result = num1 + num2;
var display = document.getElementById("display");
display.append(result);
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS</title>
</head>
<body id="body">
<form action="" id="form">
<label for="num1">Number 1</label>
<input type="number" name="num1" id="num1">
<label for="num2">Number 2</label>
<input type="number" name="num2" id="num2">
<button id="submit" onclick="add()">Add</button>
</form>
<p id="display"></p>
<script language="javascript" type="text/javascript" src="js.js"></script>
</div>
</body>
</html>
What am I doing wrong? Thanks for any help!
Upvotes: 0
Views: 245
Reputation: 28424
You need to add event.preventDefault()
to prevent this behavior, and convert the values to numeric form before the addition:
function add(e) {
e.preventDefault();
var num1 = document.getElementById("num1").value;
var num2 = document.getElementById("num2").value;
if(num1 && num2){
var result = Number(num1) + Number(num2);
var display = document.getElementById("display");
display.append(result);
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS</title>
</head>
<body id="body">
<form action="" id="form">
<label for="num1">Number 1</label>
<input type="number" name="num1" id="num1">
<label for="num2">Number 2</label>
<input type="number" name="num2" id="num2">
<button id="submit" onclick="add(event)">Add</button>
</form>
<p id="display"></p>
<script language="javascript" type="text/javascript" src="js.js"></script>
</div>
</body>
</html>
Upvotes: 1