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

JavaScript的showDiv函数存在Bug,多按钮触发无法正确显示对应内容

解决按钮点击显示对应内容的问题

嘿,我来帮你搞定这个小问题!你现在遇到的核心问题是重复定义了同名的showDiv函数——在JavaScript里,如果你定义多个同名函数,后面的会直接覆盖前面的,所以不管你点哪个按钮,实际执行的都是最后那个showDiv,自然只会显示txt3和nxt3的内容啦。

下面给你两种简单的解决方法,选你觉得顺手的来用:

方法1:给函数传参数(原生JS写法)

我们把函数改成接受一个标识参数,让它知道要显示哪一组内容:

修改后的JS代码:

function showDiv(index) {
  // 可选:先隐藏所有的内容块,确保每次只显示当前点击的那组
  document.querySelectorAll('.answer_list').forEach(item => {
    item.style.display = 'none';
  });
  document.querySelectorAll('.nxt').forEach(item => {
    item.style.display = 'none';
  });
  
  // 显示对应index的内容
  document.getElementById(`txt${index}`).style.display = "block";
  document.getElementById(`nxt${index}`).style.display = "inline";
}

修改后的HTML按钮部分:

把每个按钮的onclick改成传对应数字的参数:

<input type="button" name="answer" value="BOUTON 1" onclick="showDiv(1)" class="btninfo" />
<input type="button" name="answer" value="BOUTON 2" onclick="showDiv(2)" class="btninfo" />
<input type="button" name="answer" value="BOUTON 3" onclick="showDiv(3)" class="btninfo" />

方法2:用jQuery事件绑定(更优雅)

既然你已经引入了jQuery,我们可以用它的事件绑定功能,不用写内联的onclick,代码更整洁:

修改后的HTML按钮部分:

给每个按钮加一个data-target属性,标记对应的内容组:

<input type="button" name="answer" value="BOUTON 1" class="btninfo" data-target="1" />
<input type="button" name="answer" value="BOUTON 2" class="btninfo" data-target="2" />
<input type="button" name="answer" value="BOUTON 3" class="btninfo" data-target="3" />

修改后的JS代码:

$(document).ready(function() {
  // 给所有.btninfo按钮绑定点击事件
  $('.btninfo').click(function() {
    const targetNum = $(this).data('target');
    
    // 隐藏所有内容块
    $('.answer_list, .nxt').hide();
    
    // 显示对应目标的内容
    $(`#txt${targetNum}`).show();
    $(`#nxt${targetNum}`).show();
  });
});

这样不管你后续加多少个按钮,只要给它们加对应的data-target属性,代码都不用额外修改,扩展性更好~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:44:26