You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript获取点击copy图标时对应flip-card-front内的p文本

问题

我有多个如下结构的列组件:

<div class="col-md-6 mt-3 mt-md-0">
        <div class="blog_content d-flex bg-dark text-white flex-column bg-black h-100 text-center pt-3 pb-3 px-3 mx-3">
            <h5 class="mb-0 border-0">નુતન વર્ષ 2023 ની શરૂઆત </h5>
            <div class="d-flex flex-grow-1 justify-content-center align-items-center mb-0 h-100">
                <div class="flip-card h-100">
                    <div class="flip-card-inner h-100">
                        <div class="flip-card-front d-flex justify-content-center align-items-center">
                            <p class="">નુતન વર્ષ 2023 ની<br> શરૂઆત કંઈક એવી થાય,<br> તમારા જીવનમાં ખુશીઓ ફેલાય,<br> આનંદ મંગલથી દરેક દિવસ<br> પસાર થાય એવી હાર્દિક<br> શુભકામનાઓ !!</p>
                        </div>
                        <div class="flip-card-back d-flex justify-content-center align-items-center">
                            <p class="">nutan varsh 2023 ni<br> sharuat kaik evi thay,<br> tamar jivanam khushio felay,<br> anand mangalathi darek divas<br> pasar thay evi hardik<br> shubhakamanao !!</p>
                        </div>
                    </div>
                </div>
            </div>
            <div class="time d-flex justify-content-between align-items-center align-items-end mt-auto pt-3">
                <div class="left text-start">
                    <h6 class="mb-0"><a class="link-bold" href="https://stag.example.com/gu/festival/happy-new-year-2023">નવા વરસની શુભકામનાઓ</a></h6>
                    <p class="mb-0"><small>1 day ago</small></p>
                </div>
                <div class="right">
                    <span class="copy"><img src="https://stag.example.com/assets/images/copy.png" class="mx-1 social" alt="share quote" width="24" height="24"></span>
                    <a href="https://stag.example.com/gu/post/happy-new-year-2023-68400"><img src="https://stag.example.com/assets/images/share.png" class="mx-1 social" alt="share quote" width="24" height="24"></a>
                </div>
            </div>
        </div>
    </div>

需求是点击带有copy类的图标时,获取对应flip-card-front容器内<p>标签的文本。我是JavaScript新手,尝试了一小时没找到可行方案,现有代码如下:

var copy = document.getElementsByClassName('copy');
            for (var i = 0; i < copy.length; i++) {
              copy[i].addEventListener('click', function() {
                //get text   નુતન વર્ષ 2023 ની<br> શરૂઆત કંઈક એવી થાય,<br> તમારા જીવનમાં ખુશીઓ ફેલાય,<br> આનંદ મંગલથી દરેક દિવસ<br> પસાર થાય એવી હાર્દિક<br> શુભકામનાઓ !!
        console.log("p tag value which is inside flip-card-front");
              });
            }

解决方案

可以通过DOM层级关系,从点击的copy元素向上定位到共同父容器,再查找目标文本。修改后的代码如下:

const copyButtons = document.querySelectorAll('.copy');
copyButtons.forEach(button => {
  button.addEventListener('click', function() {
    // 从当前点击元素向上找到对应的卡片容器
    const cardContainer = this.closest('.blog_content');
    // 在容器内找到flip-card-front下的p标签,获取文本
    const targetText = cardContainer.querySelector('.flip-card-front p').textContent;
    
    console.log(targetText);
    
    // 可选:如果需要把文本复制到剪贴板,添加以下代码
    // navigator.clipboard.writeText(targetText).then(() => {
    //   alert('文本已复制到剪贴板');
    // }).catch(err => {
    //   console.error('复制失败:', err);
    // });
  });
});

核心逻辑说明

  • 用querySelectorAll替代getElementsByClassName:返回静态NodeList,遍历绑定事件更稳定。
  • closest('.blog_content'):从点击元素向上查找最近的卡片容器,确保获取的是当前卡片的内容,不会干扰其他卡片。
  • querySelector('.flip-card-front p'):在卡片容器内精准定位目标<p>标签,直接获取其文本内容。
  • 如果需要保留原有的换行格式(将<br>转为换行符),可以替换为以下代码:
    const targetHtml = cardContainer.querySelector('.flip-card-front p').innerHTML;
    const formattedText = targetHtml.replace(/<br>/g, '\n');
    console.log(formattedText);
    

内容的提问来源于stack exchange,提问作者Manisha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 09:05:39