I'm trying to dynamically make more buttons to show further options for my project. When i click my more options button I only see one button added everything you click it. Instead I want it to display 3 buttons and attached those to different functions.
<body>
<h1>Triangle Tester</h1>
<div id="inputs">
<FORM NAME="Inputs" METHOD="GET">
<p>Please input side one!</p>
<input id="A" type="text" size="4">
<p>Please input side two!</p>
<input id="B" type="text" size="4">
<p>Please input side three!</p>
<input id="C" type="text" size="4">
</FORM>
</div>
<br/ >
<button id = "mainBtn">Show all test options</button>
<p> Option 1 Result: <span id="outputA"> </p>
<p> Option 2 Result: <span id="outputB"> </p>
</body>
<script>
function showMore() {
var firstBtn= document.createElement("Button");
firstBtn.innerHTML = "(1) Test whether three sides can form a triangle";
$("mainBtn").appendChild(firstBtn);
var secondBtn= document.createElement("Button");
secondBtn.innerHTML = "(2) Test whether three sides can form a right triangle";
$("div").appendChild(secondBtn);
var thirdBtn= document.createElement("Button");
thirdBtn.innerHTML = "(3) Test both 1 and 2";
$("div").appendChild(thirdBtn);
var fourthBtn= document.createElement("Button");
fourthBtn.innerHTML = "(4) clear result";
$("div").appendChild(fourthBtn);
$("firstBtn").on('click', triangleCalc);
$("secondBtn").on('click', rightTriCalc);
$("thirdBtn").on('click', triangleCalc);
$("thirdBtn").on('click', rightTriCalc);
$("fourthBtn").on('click', remove);
}
window.onload = function() {
var main = document.getElementById("mainBtn");
main.onclick = showMore;
}
function triangleCalc() {
var a = parseInt(document.Inputs.A.value);
var b = parseInt(document.Inputs.B.value);
var c = parseInt(document.Inputs.C.value);
var sideA = (a + b);
var sideB = (a + c);
var sideC = (b + c);
if(sideA > c || sideB > b || sideC > a)
{
$("#outputA").innerHTML = "This can form a triangle";
}
else {
$("#outputA").innerHTML = "This cannot form a triangle";
}
}
function rightTriCalc() {
var a = parseInt(document.Inputs.A.value);
var b = parseInt(document.Inputs.B.value);
var c = parseInt(document.Inputs.C.value);
var output = $("outputB");
var inA = a*a;
var inB = b*b;
var inC = c * c;
if( (inA + inB) == inC)
{
$("outputB").innerHTML = "This can Form a Right Triangle";
}
else
{
$("outputB").innerHTML = "This cannot Form a Right Triangle";
}
}
function remove() {
$("Form").removeData("A");
$("Form").removeData("B");
$("Form").removeData("C");
}
</script>
Updated with further functions as asked for by leaf
$("mainBtn")should be$("#mainBtn")since it is an id. Also your on click bindings near the bottom also appear to be invalid selectors.$("firstBtn").on('click', triangleCalc() );should also not be putting the()on the triangleCalc if you want it to be called on click. The()makes it invoke immediately.$("thirdBtn").on('click', triangleCalc(), rightTriCalc());also is invalid syntax as a binding expects only one callback at a time.("div").append(...)where the$sign is missing.triangleCalcreturns a function ? Furthermore$("thirdBtn").on('click', triangleCalc(), rightTriCalc());is not invalid.triangleCalc,rightTriCalcandremove. Otherwise you are likely to collect more sloppy comments and answers.