首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用一个按钮按下一个表数据标签的值

如何用一个按钮按下一个表数据标签的值
EN

Stack Overflow用户
提问于 2019-11-09 17:36:26
回答 2查看 149关注 0票数 0

这是我的JS代码,我想做的是用id="tg-13"点击按钮,在td中显示一个13。但是当我点击"tg-13"按钮时,所有的数字都会出现。我怎么才能解决这个问题?

代码语言:javascript
复制
 <tr onclick="aparecer()">
    <td class="tg-kpoh" style="text-align: center;">J</td>
    <td id="tg-13" style="text-align: center;"><button>?</button></td>
    <td id="tg-10" style="text-align: center;"><button>?</button></td>
    <td id="tg-45" style="text-align: center;"><button>?</button></td>
    <td id="tg-47" style="text-align: center;"><button>?</button></td>
    <td id="tg-35" style="text-align: center;"><button>?</button></td>
  </tr>

函数-隔离器()

代码语言:javascript
复制
function aparecer() {

    document.getElementById("tg-13").innerHTML = "13";

    document.getElementById("tg-10").innerHTML = "10";

    document.getElementById("tg-45").innerHTML = "45";  

    document.getElementById("tg-47").innerHTML = "47";

    document.getElementById("tg-35").innerHTML =  "35";

}   
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-09 17:44:21

问题是,您在整个行、tr上都有一个tr事件,而不是在每个td上。

我要做的是:

代码语言:javascript
复制
const onClick = (e) => {
  const currentId = e.id;
  e.innerHTML = currentId.replace('tg-', '');
}
代码语言:javascript
复制
.td-center {
  text-align: center;
}
代码语言:javascript
复制
<table>
  <tr>
    <td class="tg-kpoh td-center">J</td>
    <td id="tg-13" class="td-center" onclick="onClick(this)"><button>?</button></td>
    <td id="tg-10" class="td-center" onclick="onClick(this)"><button>?</button></td>
    <td id="tg-45" class="td-center" onclick="onClick(this)"><button>?</button></td>
    <td id="tg-47" class="td-center" onclick="onClick(this)"><button>?</button></td>
    <td id="tg-35" class="td-center" onclick="onClick(this)"><button>?</button></td>
  </tr>
</table>

我做了额外的改进,就像:

  1. 创建了td-center类,而不是内联的onClick事件。

我希望这能帮到你!

票数 2
EN

Stack Overflow用户

发布于 2019-11-09 17:59:44

  • 将所需的文本存储在data-*属性中。
  • UseElement.addEventListener()

代码语言:javascript
复制
const btns = document.querySelectorAll("[data-text]");
const setText = ev => ev.currentTarget.textContent = ev.currentTarget.dataset.text
btns.forEach(el => el.addEventListener('click', setText));
代码语言:javascript
复制
<table>
  <tr>
    <td>J</td>
    <td><button data-text="13">?</button></td>
    <td><button data-text="10">?</button></td>
    <td><button data-text="45">?</button></td>
    <td><button data-text="47">?</button></td>
    <td><button data-text="35">?</button></td>
  </tr>
</table>

避免使用内联JavaScript,如事件处理程序onclick=""。将代码保存在一个地方,就更容易调试和保持逻辑一致。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58781834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档