【发布时间】:2018-11-11 22:03:18
【问题描述】:
我有一个 for-each 循环,它从数据库中打印出一些文本并显示一个按钮。所以基本上我有多个文本“区域”,每个区域都有自己的按钮。我想要这样,每当用户点击一个按钮时,它匹配的特定文本就会被复制到剪贴板。
在发帖之前,我尝试对此进行多次搜索。但是,从其他解决方案中,我读到它们或多或少地显示了在输入标签中复制文本的解决方案。但是,在我的情况下,用户没有输入任何需要复制的内容 - 文本已经在屏幕上并且无法更改。
我无法复制与按钮匹配的特定文本,因为该文本没有特定的 id 或类名,因为它只是在循环时打印文本,因此它们都具有相同的类名。那么我如何使用该按钮指定特定文本,因为按钮可以按任何顺序按下?
HTML:
<c:forEach items="${items}" var="item">
<h2>${item.itemDescription}</h2>
<input class="big-button" type="button" value="Add item copied to clipboard" id="btn" onclick="status(this)">
</c:forEach>
JavaScript:
function status(clickedBtn)
{
clickedBtn.value = "Copied to clipboard";
clickedBtn.disabled = true;
clickedBtn.style.color = 'white';
clickedBtn.style.background = 'gray';
}
【问题讨论】:
-
我已经使用这个答案将文本放到剪贴板上:stackoverflow.com/a/33928558/74757。您可以使用选择器从
<h2>项目中获取文本并传递它。 -
您也可以使用循环中项目的索引来生成一个 id,这样您就可以更轻松地引用您的元素。
-
@Cᴏʀʏ,非常感谢您提供链接。所以,我检查了一下,似乎他们能够做到
new Date()将日期复制到剪贴板。但是,就我而言,我必须复制循环中的字符串——${item.itemDescription}。那么,我怎么能调用它,因为那是在我的 HTML 中,而不是在 JS 中。 -
@Cᴏʀʏ 哦,好吧,这是有道理的。抱歉,我还是 HTML 和 JS 的新手。我怎么能引用某个索引,因为我理论上不知道有多少元素,因为我从数据库中获取信息并插入到我的 HTML 中。
-
你用的是什么模板框架?
标签: javascript html