提问者:小点点

如何从两个不同的div(其中一个是隐藏的)复制内容,通过一次单击,但每一个都在单独的行上?


我从plumwd中找到了这段很棒的代码,我非常喜欢它,因为它很简单,而且其中一个div是隐藏的,但不幸的是,它在一行中复制了这两个内容:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<style> #HiddenURLdiv {display: none;}</style>


<div id="PreviewHeader">Hello stuff is here</div>
<div id="HiddenURLdiv">This one is hidden</div>
<a href="#" id="copystuff">Copy Stuff</a>
<div id="thecopiedtext"></div>


<script>
    $("#copystuff").click(function() {
    var temp = $("<input>");
    $("body").append(temp);

    var previewHeader = $("#PreviewHeader").text();
    var HiddenURLdiv = $("#HiddenURLdiv").text();
    var contentTogether = previewHeader + " " + HiddenURLdiv;

    temp.val(contentTogether).select();
    document.execCommand("copy");
    $("#thecopiedtext").text(contentTogether);
    temp.remove();
});
</script>

我已经尝试了我所知道的所有断行方法,希望将每个div内容放到单独的一行中,但似乎没有任何方法奏效。

我相信你们中的许多人都知道如何制作这个脚本,将每个div内容复制到单独的一行中,同时隐藏其中一个div。


共2个答案

匿名用户

  1. 不要使用,因为它只支持单行文本,并将删除换行符
  2. 使用\n添加新行
  3. #thecopiedtext添加white-space:pre以呈现换行符

null

$("#copystuff").click(function() {
  var temp = $("<textarea>");
  $("body").append(temp);

  var previewHeader = $("#PreviewHeader").text();
  var HiddenURLdiv = $("#HiddenURLdiv").text();
  var contentTogether = previewHeader + "\n" + HiddenURLdiv;

  temp.val(contentTogether).select();
  document.execCommand("copy");
  $("#thecopiedtext").text(contentTogether);
  temp.remove();
});
#HiddenURLdiv {
  display: none;
}

#thecopiedtext {
  white-space: pre;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="PreviewHeader">Hello stuff is here</div>
<div id="HiddenURLdiv">This one is hidden</div>
<a href="#" id="copystuff">Copy Stuff</a>
<div id="thecopiedtext"></div>

匿名用户

正如注释中提到的,您可以使用
来联系这两个元素,此外,您还应该使用.html(),或者您可以将这两个元素包装在

(或任何显示块标记,如

)标记中,因为

默认情况下具有display:block:

null

$("#copystuff").click(function() {
    var temp = $("<input>");
    $("body").append(temp);

    var previewHeader = $("#PreviewHeader").text();
    var HiddenURLdiv = $("#HiddenURLdiv").text();
    var contentTogether = `<div>${previewHeader}</div><div>${HiddenURLdiv}</div>`;

    temp.val(`${previewHeader}${HiddenURLdiv}`).select();
    document.execCommand("copy");
    $("#thecopiedtext").html(contentTogether);
    temp.remove();
});
#HiddenURLdiv {
  display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<div id="PreviewHeader">Hello stuff is here</div>
<div id="HiddenURLdiv">This one is hidden</div>
<a href="#" id="copystuff">Copy Stuff</a>
<div id="thecopiedtext"></div>