下拉菜单单选按钮功能异常:无图片标签无法正常显示
修复自定义Radio按钮下拉菜单的选中显示问题
问题原因
原代码中获取标签元素的逻辑错误:selectedRadioButton.querySelector('.custom-radio-label')试图在radio输入框内部查找.custom-radio-label元素,但该元素实际是radio的父级label的子元素,导致无图片的选项无法正确获取标签内容,进而无法更新下拉框显示。
修复后的代码
document.addEventListener('DOMContentLoaded', function() { const dropdownWrapper = document.getElementById('dropdown-wrapper'); const radioButtons = dropdownWrapper.querySelectorAll('.dropdown-list input[type="radio"]'); const spanElement = dropdownWrapper.querySelector('span'); function handleRadioButtonSelection(event) { const selectedRadioButton = event.target; if (selectedRadioButton.checked) { // 从父级label容器中获取自定义标签元素 const labelElement = selectedRadioButton.closest('.custom-radio').querySelector('.custom-radio-label'); // 获取标签文本,处理空值情况 const labelText = labelElement ? labelElement.textContent.trim() : ''; // 获取图片地址,无图片时返回null const imageElement = labelElement ? labelElement.querySelector('img') : null; const imageSrc = imageElement ? imageElement.src : null; // 更新下拉框显示内容 spanElement.innerHTML = imageSrc ? `<img src="${imageSrc}" alt=""> ${labelText}` : labelText; } } radioButtons.forEach(radioButton => { radioButton.addEventListener('change', handleRadioButtonSelection); }); });
关键修改说明
- 使用
closest('.custom-radio')定位radio的父级label容器,再从中获取.custom-radio-label,确保无论是否有图片都能正确找到标签元素 - 拆分图片与文本的获取逻辑,即使没有图片元素也不会触发错误
- 优化显示内容拼接逻辑,无图片时直接展示文本,避免多余空格
内容的提问来源于stack exchange,提问作者Rex
相关产品推荐
相关产品推荐

