【问题标题】:How do I replace any existing selection of elements by id in my browser with javascript? [duplicate]如何用 javascript 在浏览器中通过 id 替换任何现有的元素选择? [复制]
【发布时间】:2021-01-25 22:59:27
【问题描述】:

我承认我对 Javascript 并没有任何了解。我在互联网上找到了这个,它确实可以满足我的要求:

<script type="text/javascript">
    function CopyToClipboard(containerid) {
        if (document.selection) {
            var range = document.body.createTextRange();
            range.moveToElementText(document.getElementById(containerid));
            range.select().createTextRange();
            document.execCommand("copy");
        } else if (window.getSelection) {
            var range = document.createRange();
            range.selectNode(document.getElementById(containerid));
            window.getSelection().addRange(range);
            document.execCommand("copy");
            alert("The assignment slip has been copied, now paste into an email")
        }
    }
</script>

它是这样称呼的:

<button id="button1" onclick="CopyToClipboard('containter-student-slip1')">Click to copy</button>

问题是我必须在单击浏览器中的下一步按钮之前清除选择。我希望它只需选择带有 ID 的指定元素并替换浏览器中的任何存在选择。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    如果这不是您想要的,请发布输入 html。因为如果 slip1 是动态的,则需要更改 id。

    <script type="text/javascript">
    
      $(document).ready(function(e) {
    
        $('body').on('click', '[id^=button]', function(e) {
        
          CopyToClipboard('container-student-slip1');
        
        });
    
        function CopyToClipboard(containerid) {
            if (document.selection) {
                var range = document.body.createTextRange();
                range.moveToElementText(document.getElementById(containerid));
                range.select().createTextRange();
                document.execCommand("copy");
            } else if (window.getSelection) {
                var range = document.createRange();
                range.selectNode(document.getElementById(containerid));
                window.getSelection().addRange(range);
                document.execCommand("copy");
                alert("The assignment slip has been copied, now paste into an email"); //had a missing comma
            }
        }
      
      });
    
    </script>
    &lt;button id="button1"&gt;Click to copy&lt;/button&gt;

    【讨论】:

    • 我有一个数据行表。每行都有一个具有唯一 ID 的 div 和一个用于复制该 div 内容的按钮。所以我没有输入可以重置我所知道的。我只是希望它“重新选择”具有指定 ID 的新选择。想象一下,我有 ID 1 和 ID 2。如果我点击按钮 1,它会选择 ID1 元素。如果我然后点击按钮 2,它现在应该清除选择并选择 ID2 元素。目前它只是停止,因为它已经选择了 ID1 元素。
    • 我已经更新了我的答案。尽管您的代码逻辑有点偏离并且需要更多代码,但我了解您在做什么。而是动态选择按钮,然后运行该函数。
    • 谢谢。当我在答案中运行你的 sn-p 时,ut 说有一个意外的
    • 是的,您不能将其作为 sn-p 运行,您需要将其与您的代码放在一起。该令牌错误是由于我没有将 js 库添加到帖子中。请用我的代码编辑您的代码,然后试一试
    • 感谢您的回答。但是我能够按照重复答案中提到的代码来简单地清除选择。还是谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-24
    • 2022-01-12
    • 2015-07-29
    相关资源
    最近更新 更多