如何在下拉菜单选项被选中时获取其 ID

本文介绍如何通过原生 javascript 在用户选择 `

在 HTML 表单中, 本身的 change 事件。因此,试图给

ddEventListener(...))均无效,且会导致运行时错误。

✅ 正确做法:监听

document.querySelector('#dropdown').addEventListener('change', function(e) {
  const select = e.target;
  const selectedOption = select.selectedOptions[0];

  if (selectedOption && selectedOption.id) {
    console.log('Selected option ID:', selectedOption.id);
    // 示例:弹窗提示
    // alert('ID: ' + selectedOption.id);

    // 示例:用于后续 DOM 操作(如滚动到对应图片)
    // document.getElementById(selectedOption.id)?.scrollIntoView({ behavior: 'smooth' });
  } else {
    console.log('No valid option ID found (e.g., placeholder selected)');
  }
});

⚠️ 注意事项:

  • 不要使用内联 onchange="selectOption()" 配合 this 模糊引用:易引发作用域混乱,且不利于维护;
  • selectedOptions 是标准 API(兼容性好):IE9+ 及所有现代浏览器均支持,比 selectedIndex + options[index] 更语义化、更安全(尤其在多选场景下可扩展);
  • 确保 :未设置 id 时 selectedOption.id 返回空字符串,建议添加存在性判断;
  • 避免在 :HTML 规范不保证该事件会被触发,实际行为因浏览器而异,属不可靠方案。

? 进阶提示:若需同时获取 id 和 value(例如用于 API 请求),可一并读取 selectedOption.value 和 selectedOption.id;若希望支持键盘导航(如方向键切换选项),change 事件同样适用——它在用户确认选择(回车/失焦)时触发,语义准确。

综上,摒弃手动绑定子元素事件或内联 JS 的旧模式,采用 change + selectedOptions[0].id 是简洁、健壮、符合现代 Web 标准的最佳实践。