我的脚本的主要目的是宣布文本的副本已成功完成.

当我点击按钮时,第一个图标改变是OK,就像 cogo toast 显示一样,文本被正确地复制到框架clipboard.js中.

<button 
   class="btn btn-outline-success"
   id="url-rss" data-clipboard-text="Texte à copier">
      <i class="fa-regular fa-clipboard" id="icon"></i>
</button>

当我在2秒后点击按钮时,我希望脚本再次将按钮更改为fa-circle-checkfa-clipboard.

我用的是clipboard.jsBootstrap 5 (bundle)Font Awesome.

这是我的 playbook :

document.addEventListener('DOMContentLoaded', function () {
    // Load of Clipboard.js
    let clipboard = new ClipboardJS('#url-rss')

    // Variable for the Toast with Bootstrap 5
    let toastCopie = new bootstrap.Toast(document.querySelector('#copieToast'), {
        animation: true,
        delay: 2500
    });

    // We listen #url-rss on click
    document.querySelector('#url-rss').addEventListener('click', async function() {
        // If Click on the <button> do a Toast()
        toastCopie.show()

        let iconElement = document.querySelector('#icon')

        // Change of the icon, first round
        iconElement.classList.remove('fa-clipboard')
        iconElement.classList.add('fa-circle-check')

        await new Promise(resolve => setTimeout(resolve, 2000));

        // Chnage of the icon, second round
        iconElement.classList.remove('fa-circle-check');
        iconElement.classList.add('fa-clipboard');
    })
});

我已经复制了我的script on codepen个例子,如果有人想try .

我也试过这个:

        setTimeout(function() {
            iconElement.classList.remove('fa-circle-check');
            iconElement.classList.add('fa-clipboard');
        }, 2000);

但是经过各种try 和研究,我的JavaScript技能还不够先进,无法独自解决这个问题.

推荐答案

马周. 您try 了下面的代码,但可能不能正常工作,对吗?

setTimeout(function() {
    iconElement.classList.remove('fa-circle-check');
    iconElement.classList.add('fa-clipboard');
}, 2000);

主要原因是上例中的icElement不正确,因为它在2秒之后没有引用它的原始形式.

如果您像这样更正您的代码,这将工作得很好.

setTimeout(function() {
   let iconElement = document.querySelector('#icon');   
   iconElement.classList.remove('fa-circle-check');
   iconElement.classList.add('fa-clipboard');
}, 2000);

必须在此作用域中重新处理图标元素. 因为如果你改变了SVG元素的类名,改变了它的形状,过go 的元素就不再存在了.

我在您的代码片段中测试了这段代码. 如果您有任何其他的Java脚本问题,请与我联系.(我的荣幸)

Javascript相关问答推荐

在分区内迭代分区

当在select中 Select 选项时,我必须禁用不匹配的 Select

按钮未放置在html dis位置

如何在Obsidian dataview中创建进度条

在观察框架中搜索CSV数据

有没有可能使滑动img动画以更快的速度连续?

自定义高图中的x轴标签序列

显示图—如何在图例项上添加删除线效果?

实现JS代码更改CSS元素

如何使onPaste事件与可拖动的HTML元素一起工作?

在我的index.html页面上找不到我的Java脚本条形图

在Reaction中的handleSubmit按钮内,useSelector值仍然为空

如何使用基于promise (非事件emits 器)的方法来传输数据?

在验证和提交表单后使用useNavigate()进行react 重定向,使用带有加载器和操作的路由

对具有相似属性的对象数组进行分组,并使用串连的值获得结果

将Auth0用户对象存储在nextjs类型脚本的Reaction上下文中

每隔3个项目交替显示,然后每1个项目交替显示

调用特定数组索引时,为什么类型脚本不判断未定义

如何在不将整个文件加载到内存的情况下,在Node.js中实现Unix粘贴命令?

正在发出错误的URL请求