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

下拉菜单单选按钮功能异常:无图片标签无法正常显示

修复自定义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);
    });
});

关键修改说明

  1. 使用closest('.custom-radio')定位radio的父级label容器,再从中获取.custom-radio-label,确保无论是否有图片都能正确找到标签元素
  2. 拆分图片与文本的获取逻辑,即使没有图片元素也不会触发错误
  3. 优化显示内容拼接逻辑,无图片时直接展示文本,避免多余空格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 03:20:02