我有这个脚本,它使用基于另一个下拉列表的时间 Select 来填充语义UI下拉列表:

  document.addEventListener('DOMContentLoaded', function () {

  const fromDropdown = $('#fromtime');
  const toDropdown = $('#totime');


  fromDropdown.dropdown();
  toDropdown.dropdown();


  fromDropdown.on('change', function () {
    const selectedTimeFrom = fromDropdown.dropdown('get value');
    const timeToMenu = toDropdown.find('.menu');


    timeToMenu.empty();


    if (selectedTimeFrom) {
      const times = [
        '00:00', '00:30', '01:00', '01:30',
        '02:00', '02:30', '03:00', '03:30',
        '04:00', '04:30', '05:00', '05:30',
        '06:00', '06:30', '07:00', '07:30',
        '08:00', '08:30', 
        '09:00', '09:30', '10:00', '10:30',
        '11:00', '11:30', '12:00', '12:30',
        '13:00', '13:30', '14:00', '14:30',
        '15:00', '15:30', '16:00', '16:30',
        '17:00', '17:30', '18:00', '18:30',
        '19:00', '19:30', '20:00', '20:30',
        '21:00', '21:30', '22:00', '22:30',
        '23:00', '23:30',
        // Add more time intervals as needed
      ];

      for (const time of times) {
        if (time > selectedTimeFrom) {
          if (time < '06:00') {
            timeToMenu.append(`<div class="item" data-value="${time}">${time}</div>`);
          } else {
            timeToMenu.append(`<div class="item" data-value="${time}">${time}</div>`);
          }
        }
      }


      toDropdown.dropdown('set selected', timeToMenu.find('.item').first().data('value'));
    }
  });
  toDropdown.on('change', function () {
    const selectedTimeTo = toDropdown.dropdown('get value');
     
    
  });
});

如果时间&lt;06:00在显示时间之前,如何仅在下拉列表中所选项目的旁边添加图像?

推荐答案

Edit当时间低于06:00时,您只希望图像显示在所选时间的旁边,但您不希望图像显示在下拉菜单中.

要做到这一点,最好的方法是监听下拉菜单上的更改事件. Select 时间后,判断该值是否小于"06:00".如果是,则将该图像添加到下拉列表的可视表示中.如果该值大于或等于"06:00",则删除该图像(如果存在).

将语义用户界面下拉菜单(您在注释中提到的)与普通的JavaScript一起使用,您将执行如下操作:

  1. 首先,您可以设置一个简单的助手函数来判断所选时间是否在06:00之前.您不需要在单独的函数中使用它,但我更喜欢抽象:d:

    function isBefore6am(time) {
       return time && time < "06:00";
     }
    
  2. 监听下拉菜单更改事件:

     const toDropdownElement = document.getElementById('totime');
     toDropdownElement.addEventListener('change', function() {
       const selectedTime = toDropdownElement.value;
    
       if (isBefore6am(selectedTime)) {
         // Append the image to the dropdown's visual representation.
         // This assumes you have some image element or class that represents the image.
         toDropdownElement.classList.add("early-morning-icon");
       } else {
         toDropdownElement.classList.remove("early-morning-icon");
       }
     });
    

在上面的代码中,我假设您可能有一个添加图像的css类(early-morning-icon),它可能作为背景图像或使用像::before这样的伪元素.根据需要调整添加图像的方式.

下面是图片添加的一个假设的css:

#totime.early-morning-icon::before {
  content: url('path_to_your_image.jpg');
  margin-right: 5px;
}

当向其添加early-morning-icon类时,该css规则将把图像放在下拉列表的文本之前.

请记住,根据您的确切要求并基于您在项目中使用的特定样式和 struct 来调整逻辑.

Javascript相关问答推荐

如何编辑代码FlipDown.js倒计时?

当在select中 Select 选项时,我必须禁用不匹配的 Select

扫描qr code后出错whatter—web.js

点击按钮一次有文本出现和褪色,而不是点击两次?(html,CSS,JavaScript)

Angular 17—每当一个布尔变量变为真时触发循环轮询,只要它保持为真

如何使覆盖div与可水平滚动的父div相关?

如何根据当前打开的BottomTab Screeb动态加载React组件?

无法读取未定义错误的属性路径名''

如何将react—flanet map添加到remixjs应用程序

Prisma具有至少一个值的多对多关系

如何使onPaste事件与可拖动的HTML元素一起工作?

更改预请求脚本中重用的JSON主体变量- Postman

Eval vs函数()返回语义

Angular 形式,从DOM中删除不会删除指定索引处的内容,但会删除最后一项

如何 for each 输入动态设置输入变更值

如何限制显示在分页中的可见页面的数量

在不扭曲纹理的情况下在顶点着色器中旋转UV

有没有办法更改Chart.js 3.x.x中主要刻度的字体?

如果对象中的字段等于某个值,则从数组列表中删除对象

Angel Auth Guard-用户只有在未登录时才能访问登录页面,只有在登录时才能访问其他页面