Reputation: 3
I'm learning Javascript right now and I got a problem (might be a small problem for you guys). Here is my code:`
<!DOCTYPE html>
<html>
<body>
<input type="number" id="number1" placeholder="like 0,25" />
<input type="number" id="number2" placeholder="like 200" />
<input type="number" id="number3" placeholder="like 0,30"/>
<button onclick="myFunction()">Try it</button>
<p style="padding: 10px;
width: 2em;
border:3px green solid;" id="demo"></p>
<script>
function myFunction() {
var x = document.getElementById("number1").value;
var y = document.getElementById("number2").value;
var z = document.getElementById("number3").value;
var ergebnis = Math.round(eval("(x*x*y)/(z*z)"));
var res = ergebnis;
document.getElementById("demo").innerHTML = res;
}
</script>
</body>
</html>
Now I want that "error" will be displayed when the button is clicked and there is an empty input field. And that the <p>
will be first displayed, when the button is clicked. I know that I can hide the <p>
but I don't know how to make it visible after the click again.
Upvotes: 0
Views: 149
Reputation: 1133
<!DOCTYPE html>
<html>
<body>
<input type="number" id="number1" placeholder="like 0,25" />
<input type="number" id="number2" placeholder="like 200" />
<input type="number" id="number3" placeholder="like 0,30"/>
<button onclick="myFunction()">Try it</button>
<p style="padding: 10px;
width: 2em;
border:3px green solid;display: none;" id="demo"></p>
<script>
function myFunction() {
var x = document.getElementById("number1").value;
var y = document.getElementById("number2").value;
var z = document.getElementById("number3").value;
var ergebnis = Math.round(eval("(x*x*y)/(z*z)"));
var res = ergebnis;
var resultbox = document.getElementById("demo");
if(x && y && z){
resultbox.innerHTML = res;
resultbox.style.display = "block";
resultbox.style.border = "3px green solid";
resultbox.style.color = "black";
} else {
resultbox.innerHTML = "error";
resultbox.style.display = "block";
resultbox.style.border ="none";
}
}
</script>
</body>
</html>
Upvotes: 0
Reputation: 762
What you can try is to change the inner content wether are the values were found, also I would recommend you not use inline css/js, you can instead use event listeners.
Everytime the functions is called it will clear out the result.
var demo = document.getElementById("demo");
function myFunction() {
demo.innerHTML = '';
var x = document.getElementById("number1").value;
var y = document.getElementById("number2").value;
var z = document.getElementById("number3").value;
if(x && y && z){
var ergebnis = Math.round(eval("(x*x*y)/(z*z)"));
var res = ergebnis;
demo.innerHTML = res;
//You can also clear the inputs
x.value = '';
y.value = '';
z.value = '';
}else{
demo.innerHTML = 'Oops one empty imput!';
//Or delete the else if you don't want to show an error
}
}
document.querySelector('button').addEventListener('click', myFunction);
<input type="number" id="number1" placeholder="like 0,25" />
<input type="number" id="number2" placeholder="like 200" />
<input type="number" id="number3" placeholder="like 0,30"/>
<button>Try it</button>
<p id="demo"></p>
Upvotes: 0
Reputation: 33726
p
to show an error.function myFunction() {
var x = document.getElementById("number1").value;
var y = document.getElementById("number2").value;
var z = document.getElementById("number3").value;
var ergebnis = Math.round(eval("(x*x*y)/(z*z)"));
var res = ergebnis;
if (x.trim() === '' || y.trim() === '' || z.trim() === '') {
document.getElementById("error").className = "";
return;
} else {
document.getElementById("error").className = "hide";
}
document.getElementById("demo").innerHTML = res;
document.getElementById("demo").style.display = '';
}
#error {
color: red;
}
.hide {
display: none;
}
<input type="number" id="number1" placeholder="like 0,25" />
<input type="number" id="number2" placeholder="like 200" />
<input type="number" id="number3" placeholder="like 0,30" />
<button onclick="myFunction()">Try it</button>
<p id="error" class="hide">
Some information is missing!
</p>
<p style="padding: 10px;
width: 2em;
border:3px green solid; display: none" id="demo"></p>
Hope it helps!
Upvotes: 1