Html 如何使用多个按钮切换附加元素并将信息传递到输出JQuery

Html 如何使用多个按钮切换附加元素并将信息传递到输出JQuery,html,jquery-ui,button,toggle,Html,Jquery Ui,Button,Toggle,我以前也问过类似的问题: 答案很好,但这次我在代码中使用了不同的方法,因此提出了一个新问题。 我试图切换信息和附加一个div使用三个不同的按钮 这是密码 JavaScript document.getElementById("brazil").addEventListener('click', function(e){ if(e.currentTarget.dataset.triggered) return; e.currentTarget.dataset.triggered = true; A

我以前也问过类似的问题:

答案很好,但这次我在代码中使用了不同的方法,因此提出了一个新问题。 我试图切换信息和附加一个div使用三个不同的按钮

这是密码

JavaScript

document.getElementById("brazil").addEventListener('click', function(e){
if(e.currentTarget.dataset.triggered) return;
e.currentTarget.dataset.triggered = true;
AppendFunction();

function AppendFunction() {
    var para = document.createElement("p");
    var homeTeam = document.getElementById("brazil").value
    para.innerHTML = 'This is the national team of ' + `${homeTeam}` + ':' 
   <br> <input type="text" value="${homeTeam}" id="myInput"><button 
   onclick="myFunction()">Copy text</button>';

        var element = document.getElementById("gugu");
    element.appendChild(para)
    }
})


document.getElementById("draw").addEventListener('click', function(e){
if(e.currentTarget.dataset.triggered) return;
e.currentTarget.dataset.triggered = true;
AppendFunction();

function AppendFunction() {
    var para = document.createElement("p");
    var homeTeam = document.getElementById("draw").value
    para.innerHTML = 'This two teams have played each other 4 times ' + 
`${homeTeam}` + ':' <br> <input type="text" value="${homeTeam}" id="myInput"> 
<button onclick="myFunction()">Copy text</button>';

        var element = document.getElementById("gugu");
    element.appendChild(para)
    }
})


document.getElementById("russia").addEventListener('click', function(e){
if(e.currentTarget.dataset.triggered) return;
e.currentTarget.dataset.triggered = true;
AppendFunction();

function AppendFunction() {
    var para = document.createElement("p");
    var homeTeam = document.getElementById("russia").value
    para.innerHTML = 'This is the national team of ' + `${homeTeam}` + ':' 
<br> <input type="text" value="${homeTeam}" id="myInput"><button 
onclick="myFunction()">Copy text</button>';

        var element = document.getElementById("gugu");
    element.appendChild(para)
    }
})
$(function() {
  function myFunction() {
    //Do Stuff
  }

  function AppendFunction(id) {
    var para = $("<p>");
    var home = $("#" + id).val();
    para.append("This is the national team of " + home + ":", $("<br>"), $("<input>", {
      type: "text",
      value: home,
      id: "myInput"
    }), $("<button>").html("Copy Text").click(myFunction));

    $("#gugu").html(para);
  }

  function emptyOnDocumentClick(event) {
    var action = $(".triggered").length;
    $(".triggered").removeClass("triggered");
    return !action;
  }

  $("#brazil, #russia").on('click', function(e) {
    if ($(this).hasClass("triggered")) {
      return;
    }
    $(this).addClass("triggered");
    var myId = $(this).attr("id");
    AppendFunction(myId);
  });

  $(document).on("click", function(e) {
    if (emptyOnDocumentClick(e)) {
      $("#gugu").html("");
    }
  });
});
document.getElementById(“巴西”).addEventListener('click',函数(e){
if(e.currentTarget.dataset.triggered)返回;
e、 currentTarget.dataset.triggered=true;
AppendFunction();
函数AppendFunction(){
var para=document.createElement(“p”);
var homeTeam=document.getElementById(“巴西”).value
para.innerHTML='这是'+'${homeTeam}'+'的国家队:'

复制文本'; var元素=document.getElementById(“gugu”); 元素.附加子元素(第6段) } }) document.getElementById(“draw”).addEventListener('click',函数(e){ if(e.currentTarget.dataset.triggered)返回; e、 currentTarget.dataset.triggered=true; AppendFunction(); 函数AppendFunction(){ var para=document.createElement(“p”); var homeTeam=document.getElementById(“draw”).value para.innerHTML='这两支球队已经相互比赛了4次'+ `${homeTeam}`+':'
复制文本'; var元素=document.getElementById(“gugu”); 元素.附加子元素(第6段) } }) document.getElementById(“俄罗斯”).addEventListener('click',函数(e){ if(e.currentTarget.dataset.triggered)返回; e、 currentTarget.dataset.triggered=true; AppendFunction(); 函数AppendFunction(){ var para=document.createElement(“p”); var homeTeam=document.getElementById(“俄罗斯”).value para.innerHTML='这是'+'${homeTeam}'+'的国家队:'
复制文本'; var元素=document.getElementById(“gugu”); 元素.附加子元素(第6段) } })
PS:我不知道为什么javascript代码不能在fiddle中工作,但它在我的计算机上工作

如果你看一下代码,我基本上是想用不同团队的信息切换一个div。如果是巴西,div会提供关于巴西的信息,如果是俄罗斯,则会提供关于俄罗斯的信息。 我当前代码的问题是它一直在附加div,而不是 切换它们。如何切换它们?像这样:

而不是让他们在每次我点击不同的按钮时附加另一个div? 徖

PS:编辑和更新:

@Twisty,我从您的小提琴中分叉了代码,并尝试在使用多行按钮时实现它。代码运行得很好,但每次单击该行上的按钮时,我都无法为每行添加不同的单独元素

我尝试将附加元素作为类: 代码如下:

还尝试将其作为id: 代码如下:

我怎样才能让每一行都附加它自己单独的元素,我还希望用户能够使用copy按钮进行复制,而不让元素消失。如何使元素仅在单击相应的外部时消失:

<div class="col.buttonCol " id="buttons-div">

当我点击另一行按钮时也会消失? 在你的回答中,你还说你会使用文本框,而不是以这种方式附加。我检查了模态,它们都像警报一样出现在浏览器上。你能给我指一个资源,展示如何使用像附加元素一样工作的模态,而不是像警报一样工作的模态吗?多谢各位


下面是我看到的modals的链接:

我将所有JavaScript转换为jQuery,因为您在
jQuery ui中发布了这篇文章,我假设您想使用jQuery

我通常会先组织我的功能,然后再组织交互动作

JavaScript

document.getElementById("brazil").addEventListener('click', function(e){
if(e.currentTarget.dataset.triggered) return;
e.currentTarget.dataset.triggered = true;
AppendFunction();

function AppendFunction() {
    var para = document.createElement("p");
    var homeTeam = document.getElementById("brazil").value
    para.innerHTML = 'This is the national team of ' + `${homeTeam}` + ':' 
   <br> <input type="text" value="${homeTeam}" id="myInput"><button 
   onclick="myFunction()">Copy text</button>';

        var element = document.getElementById("gugu");
    element.appendChild(para)
    }
})


document.getElementById("draw").addEventListener('click', function(e){
if(e.currentTarget.dataset.triggered) return;
e.currentTarget.dataset.triggered = true;
AppendFunction();

function AppendFunction() {
    var para = document.createElement("p");
    var homeTeam = document.getElementById("draw").value
    para.innerHTML = 'This two teams have played each other 4 times ' + 
`${homeTeam}` + ':' <br> <input type="text" value="${homeTeam}" id="myInput"> 
<button onclick="myFunction()">Copy text</button>';

        var element = document.getElementById("gugu");
    element.appendChild(para)
    }
})


document.getElementById("russia").addEventListener('click', function(e){
if(e.currentTarget.dataset.triggered) return;
e.currentTarget.dataset.triggered = true;
AppendFunction();

function AppendFunction() {
    var para = document.createElement("p");
    var homeTeam = document.getElementById("russia").value
    para.innerHTML = 'This is the national team of ' + `${homeTeam}` + ':' 
<br> <input type="text" value="${homeTeam}" id="myInput"><button 
onclick="myFunction()">Copy text</button>';

        var element = document.getElementById("gugu");
    element.appendChild(para)
    }
})
$(function() {
  function myFunction() {
    //Do Stuff
  }

  function AppendFunction(id) {
    var para = $("<p>");
    var home = $("#" + id).val();
    para.append("This is the national team of " + home + ":", $("<br>"), $("<input>", {
      type: "text",
      value: home,
      id: "myInput"
    }), $("<button>").html("Copy Text").click(myFunction));

    $("#gugu").html(para);
  }

  function emptyOnDocumentClick(event) {
    var action = $(".triggered").length;
    $(".triggered").removeClass("triggered");
    return !action;
  }

  $("#brazil, #russia").on('click', function(e) {
    if ($(this).hasClass("triggered")) {
      return;
    }
    $(this).addClass("triggered");
    var myId = $(this).attr("id");
    AppendFunction(myId);
  });

  $(document).on("click", function(e) {
    if (emptyOnDocumentClick(e)) {
      $("#gugu").html("");
    }
  });
});
$(函数(){
函数myFunction(){
//做事
}
函数追加函数(id){
var para=$(“”);
var home=$(“#”+id).val();
附加段落(“这是由“+home+”:“,$(“
”),$(”)组成的国家队{ 键入:“文本”, 价值观:家, id:“我的输入” }),$(“”)。html(“复制文本”)。单击(myFunction)); $(#gugu”).html(第2段); } 函数清空文档单击(事件){ var action=$(“.triggered”).length; $(“.triggered”).removeClass(“triggered”); 返回!行动; } $(“#巴西,#俄罗斯”)。在('click',函数(e){ if($(this).hasClass(“已触发”)){ 回来 } $(此).addClass(“已触发”); var myId=$(this.attr(“id”); 附件功能(myId); }); $(文档)。在(“单击”)上,函数(e){ 如果(单击(e)){ $(“#gugu”).html(“”); } }); });
工作示例:

这里的基本概念是一个对话框,如果是我,我会使用一个来自引导或jqueryui的对话框。您没有这样做,所以我们创建内容并将其附加到特定的
。然后,就像在上一个问题中一样,您只需检测到对文档的单击,并决定该操作将做什么。在本例中,我清空了先前添加内容的
的内容


希望这能有所帮助。

您的代码无法正常工作的原因有很多。首先看一下JSFIDLE中的第9行。同时将CSS移到参考资料中。@Twisty我刚刚更新了问题,请检查一下。谢谢