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

函数在button上可正常运行,在p标签上失效,求排查问题

问题原因及修复方案

你的代码存在两个关键错误,导致addEventListener绑定的点击事件无法生效:

1. 事件回调的函数调用方式错误

使用addEventListener时,第二个参数不能直接写showAcc('acc-mobil')——这种写法会立即执行函数,而不是把函数作为点击触发的回调绑定。必须用匿名函数包裹,或者通过bind传递参数,保证函数只在点击时执行。

2. 语法错误

addEventListener那一行末尾缺少一个右括号,导致浏览器解析脚本失败,直接跳过了这段绑定逻辑。


修正后的完整代码

<button type="button" onclick="showAcc('acc-mobil')">Mobil</button>
<p id="showmob">Mobil</p>

<script>
// 用匿名函数包裹,确保点击时才调用目标函数并传参
document.getElementById("showmob").addEventListener("click", function() {
  showAcc('acc-mobil');
});

function showAcc(param) {
  document.getElementById("acc-mobil").style.display = "none" ;
  document.getElementById("acc-faktura").style.display = "none" ;
  document.getElementById("acc-vaxel").style.display = "none" ;
  document.getElementById("acc-internet").style.display = "none" ;
  document.getElementById("acc-kontor").style.display = "none" ;
  document.getElementById("acc-ab").style.display = "none" ;
  document.getElementById(param).style.display = "block" ;
}
</script>

额外优化建议

可以把隐藏所有元素的逻辑封装成独立函数,减少重复代码:

function hideAllAcc() {
  const accIds = ['acc-mobil', 'acc-faktura', 'acc-vaxel', 'acc-internet', 'acc-kontor', 'acc-ab'];
  accIds.forEach(id => document.getElementById(id).style.display = 'none');
}

function showAcc(param) {
  hideAllAcc();
  document.getElementById(param).style.display = "block" ;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 18:20:32