本文介绍如何通过 javascript 动态控制 `
实现该功能的关键在于建立复选框与对应下拉菜单的语义化绑定关系,而非依赖索引硬编码(如 #punteggio${index+1})。原代码使用 index 匹配 checkbox 和 select,但 HTML 中多个复选框 ID 重复(均为 id="checkbox1"),导致 querySelectorAll('input[type="checkbox"]') 返回的元素顺序与 #punteggio1、#punteggio2 等实际位置不一致,引发错位匹配和逻辑失效。
更健壮的方案是:遍历每个
以下是优化后的完整 JavaScript 逻辑(推荐替换原 setInterval 代码):
setInterval(() => {
document.querySelectorAll('#ordered li').forEach((li) => {
const select = li.querySelector('select');
const checkbox = li.querySelector('input[type="checkbox"]');
if (!select || !checkbox) return; // 安全防护:跳过缺失元素
if (checkbox.checked) {
select.style.borderColor = select.value === '0' ? 'red' : 'green';
select.style.borderWidth = '2px'; // 统一加粗边框,增强视觉反馈
} else {
select.style.borderColor = 'gray';
select.style.borderWidth = '1px'; // 恢复默认粗细
}
});
}, 100);✅ 优势说明:
⚠️ 注意事项:
最终效果:用户勾选“Primo esercizio”且下拉选“0” → 红框;选“5” → 绿框;取消勾选 → 灰框还原——响应及时、逻辑清晰、易于维护
。