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

点击帖子点赞按钮后内部glyphicon图标消失该如何修复?

问题原因

你在点击事件中直接通过innerHTML重写了按钮的全部内容,原本按钮内包含的点赞图标<i class="glyphicon glyphicon-thumbs-up"></i>被纯数字覆盖,因此图标消失。

修复方案

方案1(推荐):单独封装点赞数容器,避免修改整体DOM

先修改按钮HTML结构,给点赞数单独套一层带唯一ID的<span>标签:

<button id="likebtn" type="button" 
        class="btn btn-sml btn-danger" style="width:70px;">
    <i class="glyphicon glyphicon-thumbs-up"> </i> 
    <span id="like-count"><?php echo $post_likes; ?></span>
</button>

再修改JS代码,仅更新点赞数容器的内容,不触碰图标部分:

let likebtn = document.querySelector('#likebtn');
let likeCount = document.querySelector('#like-count');
likebtn.addEventListener('click', () => {
    // 更新点赞数,直接读取当前显示数值加1即可,不需要依赖后端输出的初始值
    let newLikes = parseInt(likeCount.textContent) + 1;
    likeCount.textContent = newLikes;
    
    likebtn.disabled = true;
    likebtn.style.opacity = 0.5;
});

方案2:不改HTML,更新innerHTML时保留图标标签

如果不想调整原有HTML结构,直接修改JS的innerHTML赋值逻辑,把图标标签也拼接进去:

let likebtn = document.querySelector('#likebtn');
likebtn.addEventListener('click', () => {
    let newLikes = <?php echo $post_likes; ?> + 1;
    // 重写内容时带上图标标签
    likebtn.innerHTML = `<i class="glyphicon glyphicon-thumbs-up"></i> ${newLikes}`;
    
    likebtn.disabled = true;
    likebtn.style.opacity = 0.5;
});

注意事项

  1. 你原有代码里的likebtn.value赋值对普通button元素无效,可以直接删除。
  2. 目前前端直接加1的逻辑有数据不一致风险,如果多个用户同时点赞或者页面有缓存,前端显示数值会和后端实际存储值不符,建议点击后先发送异步请求到后端更新点赞数,拿到后端返回的最新值后再更新前端显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:06:00