在jQuery中动态添加按钮

时间:2018-03-27 17:59:29

标签: javascript jquery

我试图动态制作更多按钮来显示我的项目的更多选项。当我点击我的更多选项按钮时,我只看到一个按钮添加了你点击它的所有内容。相反,我希望它显示3个按钮并将它们附加到不同的功能。

<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>

更新了叶子要求的其他功能

2 个答案:

答案 0 :(得分:1)

您的代码中存在一些语法问题......

我不确定在这里解释哪些是相关的。
请看看这个更新的代码......并询问你没有得到什么。

$(document).ready(function(){
  function showMore() {
    //console.log("ok");
    
    var firstBtn = $("<Button>");
    firstBtn.html("(1) Test whether three sides can form a triangle").attr("id","firstBtn");
    $("#more_btn").append(firstBtn).append("<br>");

    var secondBtn = $("<Button>");
    secondBtn.html("(2) Test whether three sides can form a right triangle").attr("id","secondBtn");
    $("#more_btn").append(secondBtn).append("<br>");

    var thirdBtn = $("<Button>");
    thirdBtn.html("(3) Test both 1 and 2").attr("id","thirdBtn");
    $("#more_btn").append(thirdBtn).append("<br>");

    var fourthBtn = $("<Button>");
    fourthBtn.html("(4) clear result").attr("id","fourthBtn");
    $("#more_btn").append(fourthBtn).append("<br>");

    $("#firstBtn").on('click', triangleCalc() );
    $("#secondBtn").on('click', rightTriCalc() );
    $("#thirdBtn").on('click', triangleCalc(), rightTriCalc());
    $("#fourthBtn").on('click', function(){
      $(this).remove();
    });
  }

  function triangleCalc(){}
  function rightTriCalc(){}
  
  $("#mainBtn").on("click", showMore);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<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">
      
      <div id="more_btn"></div>
      
    </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>

答案 1 :(得分:0)

您可以创建一个单独的div标签,并为其添加按钮。在这里,我使用<div id = "test"></div>

添加了var div = document.getElementById('test'); div.appendChild(firstBtn);和附加按钮
<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>
    <div id = "test"></div>
    <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";
var div = document.getElementById('test');
div.appendChild(firstBtn);

var secondBtn= document.createElement("Button");
secondBtn.innerHTML = "(2) Test whether three sides can form a right triangle";
div.append(secondBtn);

var thirdBtn= document.createElement("Button");
thirdBtn.innerHTML = "(3) Test both 1 and 2";
div.append(thirdBtn);

var fourthBtn= document.createElement("Button");
fourthBtn.innerHTML = "(4) clear result";
div.append(fourthBtn);

$("firstBtn").on('click', triangleCalc() );
$("secondBtn").on('click', rightTriCalc() );
$("thirdBtn").on('click', triangleCalc(), rightTriCalc());
$("fourthBtn").on('click', remove());
}

window.onload = function() {
var main = document.getElementById("mainBtn");
main.onclick = showMore;
}
</script>