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

ASP.NET表格值为1的单元格弹窗显示异常,点击均触发首个弹窗问题求助

解决方法

你遇到的问题核心是HTML页面中ID必须唯一,document.getElementById只会匹配页面中第一个出现的对应ID元素,所以所有弹窗触发后只会打开第一个。我们不需要给每个弹窗单独写触发函数,只要把当前点击的元素传入函数,查找其内部的弹窗元素即可,适配ASP.NET动态生成表格的场景。

1. 修改触发调用

把表格中所有弹窗div的onclick属性改成传当前元素,同时可以直接删除所有popuptext的id属性,后续用类名查找即可,不需要维护唯一ID:

<div class="popup" onclick="myFunction(this)">1
  <span class="popuptext">
  Customer name : Neeraj
  Customer Number : 1234567890
  Contact Date & Time : 11/25/2021 14:04
  Agent Name
  </span>
</div>

2. 替换JS代码

function myFunction(currentPopup) {
  // 查找当前点击的popup内部的弹窗元素
  const popupText = currentPopup.querySelector('.popuptext');
  // 先关闭其他已经打开的弹窗,避免同时弹出多个
  document.querySelectorAll('.popuptext.show').forEach(item => {
    if(item !== popupText) item.classList.remove('show');
  });
  // 切换当前弹窗的显示状态
  popupText.classList.toggle('show');
}

// 可选优化:点击页面其他区域自动关闭所有弹窗
document.addEventListener('click', function(e) {
  if(!e.target.closest('.popup')) {
    document.querySelectorAll('.popuptext.show').forEach(item => {
      item.classList.remove('show');
    });
  }
});

3. CSS无需修改

你现有的CSS代码可以直接沿用,不需要调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:54:08