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

下拉菜单(Dropdown Menu)中onclick函数无法正常工作求助

问题排查与修复方案

问题1:拼写错误

你的HTML代码里第一个选项的点击事件属性拼写错误:onlcick → 应为onclick,这个错误直接导致第一个选项点击后无法触发show函数。

问题2:事件冒泡干扰

点击下拉选项时,事件会向上冒泡到.dropdown元素,触发它的onclick事件,导致下拉菜单自动收起,影响交互体验。需要在选项的点击事件中阻止冒泡。

问题3:CSS属性错误

.dropdown input的height值写成了100,缺少单位%,会导致输入框高度显示异常。


修复后的完整代码

JavaScript(新增阻止冒泡逻辑)

function show(anything, e) {
  // 阻止事件冒泡,避免触发dropdown的onclick
  e.stopPropagation();
  document.querySelector('.textBox').value = anything;
  // 可选:点击选项后自动收起菜单
  dropdown.classList.remove('active');
}
let dropdown = document.querySelector('.dropdown');
dropdown.onclick = function() {
  dropdown.classList.toggle('active');
}

CSS(修正height属性)

@import url('https://fonts.googleapis.com/css?family=Poppins:100,200,300,400,500,600,700,800,900');
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-family: 'Poppins', sans-serif;
}

body {
  display: flex;
  justify-content: center;
  min-height: 100vh;
  background: #fafafa;
}

.dropdown {
  position: relative;
  margin-top: 100px;
  width: 300px;
  height: 50px;
}

.dropdown::before {
  content: "";
  position: absolute;
  right: 20px;
  top: 15px;
  z-index: 10000;
  width: 8px;
  height: 8px;
  border: 2px solid #333;
  border-top: 2px solid #fff;
  border-right: 2px solid #fff;
  transform: rotate(-45deg);
  transition: 0.5s;
  pointer-events: none;
}

.dropdown.active::before {
  top: 22px;
  transform: rotate(-225deg);
}

.dropdown input {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%; /* 修正这里,添加% */
  cursor: pointer;
  background: #fff;
  border: none;
  outline: none;
  box-shadow: 0px 5px 20px rgba(0, 0, 0, 0.05);
  padding: 12px 20px;
  border-radius: 10px;
}

.dropdown .option {
  position: absolute;
  top: 70px;
  width: 100%;
  background: #fff;
  box-shadow: 0px 30px 30px rgba(0, 0, 0, 0.05);
  border-radius: 10px;
  overflow: hidden;
  display: none; /* 去掉注释,默认隐藏选项 */
}

.dropdown.active .option {
  display: block;
}

.dropdown .option div {
  padding: 10px 20px;
  cursor: pointer;
}

.dropdown .option div:hover {
  background: #62baea;
  color: #fff;
}

HTML(修正拼写错误,传递事件对象)

<body>
  <h2>Converter</h2>
  <label>Litres</label>
  <div class="dropdown">
    <input type="text" class="textBox" placeholder="HTML" readonly>
    <div class="option">
      <div onclick="show('HTML', event)">HTML</div> <!-- 修正拼写,添加event参数 -->
      <div onclick="show('HTML', event)">HTML</div>
      <div onclick="show('HTML', event)">HTML</div>
      <div onclick="show('HTML', event)">HTML</div>
    </div>
  </div>
</body>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:24:25