JavaScript CopyToClipboard 与 onclick 按钮在同一行

标签 javascript ruby-on-rails ruby

我有以下脚本,它从表格中复制一个单元格数据(该单元格是隐藏的 - JS 获取数据,show 必须暂时显示它);它工作得很好,但只对“bbcode2”ID 和任何行上的“onclick="CopyToClipboard2”仅影响第一行“bbcode2”ID 记录

我不知道如何让 JS 抓取与 onclick 按钮位于同一行的同一单元格。我尝试添加 .closest(#bbcode2),但仍然只获取 bbcode2 的第一个实例

如果需要,我可以用动态 ID 替换 bbcode2

<script type="text/javascript">
function CopyToClipboard2() {
    document.getElementById("bbcode2").style.display = 'block';
    document.getElementById("bbcode2").focus();
    if (document.selection) {
        var range = document.body.createTextRange();
        range.moveToElementText(document.getElementById("bbcode2"));
        range.select().createTextRange();
        document.execCommand("Copy");
    } else if (window.getSelection) {
        window.getSelection().removeAllRanges();
        var range = document.createRange();
        range.selectNode(document.getElementById("bbcode2"));
        window.getSelection().addRange(range);
        document.execCommand("Copy");
    }
    document.getElementById("bbcode2").style.display = 'none';
}

编辑-

我为每条记录添加了一个变量 ID,现在我有以下内容,但它需要我单击单元格才能工作。我希望它通过表中同一行上的按钮发生

想法?

addEventListener('click', function (ev) {
    var serviceID = ev.target.id;
    alert(serviceID);
    if (document.selection) {
        var range = document.body.createTextRange();
        range.moveToElementText(document.getElementById(serviceID));
        range.select().createTextRange();
        document.execCommand("Copy");
    } else if (window.getSelection) {
        window.getSelection().removeAllRanges();
        var range = document.createRange();
        range.selectNode(document.getElementById(serviceID));
        window.getSelection().addRange(range);
        document.execCommand("Copy");
    }
    document.getElementById(serviceID).style.display = 'none';
})

最佳答案

我所做的是使用 rails 为 onclick 添加一个 ID

CopyToClipboard2(<%=f.id %>)

然后用它来告诉 JS 要定位的 ID

<script type="text/javascript">
function CopyToClipboard2(clicked_id) {
    document.getElementById(clicked_id).style.display = 'block';
    document.getElementById(clicked_id).focus();
    if (document.selection) {
        var range = document.body.createTextRange();
        range.moveToElementText(document.getElementById(clicked_id));
        range.select().createTextRange();
        document.execCommand("Copy");
    } else if (window.getSelection) {
        window.getSelection().removeAllRanges();
        var range = document.createRange();
        range.selectNode(document.getElementById(clicked_id));
        window.getSelection().addRange(range);
        document.execCommand("Copy");
    }
    document.getElementById(clicked_id).style.display = 'none';
}

请客:)

关于JavaScript CopyToClipboard 与 onclick 按钮在同一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52711920/

相关文章:

javascript - 检查 3 个文本框是否为空的最佳方法

ruby-on-rails - 使用 Ruby 标准 Logger 每天只创建一个日志

ruby-on-rails - Amazon s3/Cloudfront Ruby on rails 视频流

ruby-on-rails - 我们如何定义大整数?

php - 是否可以在 ruby​​ 中做动态变量?

javascript - 努力确定如何使用下拉菜单存储和检索 JSON

javascript - 计算两个选项的活跃类别

javascript - 文本替换后匹配子字符串的光标位置

ruby-on-rails - Rails 不处理 get 请求中的 JSON 参数

ruby-on-rails - 在 Rails 中运行 native mongodb 命令