HTML下拉框默认选中第N项需设置selectedIndex属性或value属性; selectedIndex从0开始,-1表示无选中项,动态设置前须确保DOM就绪且选项存在。
HTML 下拉框本身不提供“设计数”功能,你实际想做的,是让 元素在页面加载时默认选中某个选项(比如第 3 个),或通过 JS 控制其选中索引。关键不是“设计数”,而是设置 selectedIndex 属性或 value 属性。
selectedIndex 是只读/可写属性,表示当前选中项的索引(从 0 开始),直接赋值即可切换选中项value 更常用,它依赖每个 的 value 属性值,与索引无关,但更语义化、不易受 DOM 变动影响 已渲染完成(比如放在 底部,或等 DOMContentLoaded)用 selected 最直接。注意:如果没选中任何项(比如所有 
都没设 selected,且没设 value 匹配),selectedIndex 为 -1。
const select = document.getElementById('mySelect');
console.log(select.selectedIndex); // 输出当前选中项索引,如 2
select.value 或点击切换后会自动更新select.options[select.selectedIndex] 再去取文本 —— 直接用 select.value 或 select.selectedOptions[0].text 更稳妥multiple),selectedIndex 只返回第一个选中项索引,此时应遍历 selectedOptions
两种主流方式:HTML 属性声明(静态)和 JS 动态设置(运行时)。推荐优先用 value,仅当必须按位置控制时才用索引。
,JS 设置 selectedIndex 会覆盖它sel.options.length > N,避免 selectedIndex = 999 导致静默失败(不会报错,但选中无效项)selectedIndex 有渲染延迟,建议加 requestAnimationFrame 包裹常见于 DOM 尚未就绪、元素未找到、或 被 JS 框架(如 Vue/React)接管后原生属性失效。不是浏览器 Bug,而是执行时机或上下文问题。
标签之前执行 JS —— 把脚本移到 前,或监听 DOMContentLoaded
document.querySelector 替代 getElementById 排查作用域问题$(...).prop('selectedIndex') 和 .attr() —— selectedIndex 是 property,不是 attribute 隐藏了,你操作的是封装层,得查对应组件文档找 APIselectedIndex,加一行 console.log(sel.selectedOptions.length) 看看有没有真选中。