Изменить цвет при выборе, нажав с помощью JavaScript JavaScript

0

У меня есть календарь с датами и временными интервалами. После выбора даты придут временные интервалы. Оттуда вы можете выбрать время, щелкнув. Теперь я хочу изменить цвет выбранного элемента во временном интервале. Предположим, если вы нажмете на временной интервал 11 AM-12PM, тогда он должен получить красный цвет, а затем вы нажмете в следующий раз, то есть 12PM-1PM, так что 12PM-1Pm получат красный цвет и сын. Я попытался использовать фокус, он не работает. Поскольку я уже использую hover. По этой причине focus и hover не будут работать в одно и то же время. Может быть, мне нужно использовать что-то onclick. Я добавил код плункера ниже. Это CSS:

.frame {
    width: 100%;
    height: 400px;

    margin-left: 0%;
    border: 1px solid #777777;
    overflow: auto;
}

.datepicker {
    width: 100%;
    list-style: none;
    padding: 0px;
    margin: 0px;
}

.datepicker li {
    cursor: pointer;
    border-bottom: 1px solid #ededed;
    padding: 10px;
}
.datepicker li:hover {
    background: #EEE;
}
.text-center {
    text-align: center;
}

.border {
    border: 1px solid red;
}

Ссылка на плунжер

  • 0
    Вы должны использовать JavaScript для обработки событий, таких как клик
  • 0
    Можете ли вы добавить ключ с именем isSelected и установить его по клику. Также добавьте условие к классу в подобный class:{className: $data.isSelected} . Также убедитесь, что сбросил isSelected для всех временных интервалов, а затем установите текущий как true.
Теги:

2 ответа

1
Лучший ответ

Вы можете настроить таргетинг на выбранный элемент через $index а затем добавить к нему ng-class директиву ng-class. В принципе, вам необходимо:

  1. Добавьте выбранную переменную индекса времени в область действия:

    $scope.selectedTimeIndex = -1;
    
  2. Передать $index для selectTime и условно добавить selected класс:

    <li ng-click="selectTime(time, $index)" ng-class="{selected: $index == selectedTimeIndex}" ng-repeat="time in timeValues">{{time}}</li>
    
  3. Изменение selectedTimeIndex при вызове selectTime:

    $scope.selectTime = function(time, index) {
        $scope.selectedTimeIndex = index;
        // The rest of your function.
    };
    
  4. Добавьте selected класс в ваш.css:

    .selected {
        background: red;
    }
    

Простой пример здесь.

  • 0
    Ну, мы получили ответ. Красиво сделано ~ (у)
0

Да, как сказал @Chris, вам нужно использовать Javascript, потому что вы хотите показать это при нажатии.

Я не знаком с AngularJs, но концептуально вы можете добавить класс

.selected {
   background-color: red;
}

Затем добавьте этот класс к выбранному элементу и удалите его из элемента lastSelected.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню