Как изменить цвет элемента, когда установлен переключатель

Как работает страница:
Пользователь заполняет регистрационную форму (имя, фамилия, возраст...). Администратор может видеть все эти значения и либо одобрять, либо отклонять каждое из них, щелкнув соответствующий переключатель.

Что я хочу:
В моем файле .phtml у меня есть цикл, который создает разные группы переключателей (1 группа для поля имени, 1 группа для фамилии и т. д.). Каждая радиокнопка имеет свой ID. Каждая группа переключателей соответствует отдельному элементу на странице (имя, фамилия...). Как я могу проверить, какой из двух переключателей в группе отмечен, и изменить цвет фона соответствующего элемента (имя, фамилия...)?

Что я сделал на данный момент:
Единственный способ, которым я мог заставить его работать, - это фактически щелкнуть переключатель и получить его идентификатор. Затем с помощью директивы data-html я изменяю цвет соответствующего поля.
Я попытался изменить функцию .click на .checked, но не смог понять, как получить нужные мне идентификаторы.

$(document).ready(function () {
    $('.radio-approved').click(function(){
        greenColor($(this));
    });

    $('.radio-rejected').click(function(){
        redColor($(this));
    });
});

function greenColor(button) {

    var correspondingField=document.getElementById(button.data('html'));

    $(correspondingField).css({
        "background-color": "green"
    });
}

function redColor(button) {

    var correspondingField=document.getElementById(button.data('html'));

    $(correspondingField).css({
        "background-color": "red"
    });
}

Почему вы не можете использовать CSS для установки цвета фона для определенного класса?

user1597430 13.02.2019 17:21

во-первых, поскольку вы используете jquery, вам не нужно использовать чистые методы js getElementById()

user3307073 13.02.2019 17:21

@ygorbunkov, почему бы и нет? Я часто смешиваю их, поскольку некоторые нативные js-вещи просто быстрее и эффективнее, чем их альтернатива jquery - только потому, что вы используете jQuery, не означает, что вы должны игнорировать нативные js, если они лучше в определенных обстоятельствах (предоставлено здесь, кажется, впустую )

Pete 13.02.2019 17:28

@user1597430 user1597430 Хм, я не совсем понимаю, что вы имеете в виду. Не могли бы вы уточнить, пожалуйста?

Pmits 13.02.2019 17:29

@Ranga классический способ - создать стиль CSS для определенного класса и использовать JS только для добавления или удаления класса из элемента.

user1597430 13.02.2019 18:50
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
471
1

Ответы 1

Это то, что вы имели ввиду?

$('[type = "radio"][name = "status"]').on('change', event => {
  $(event.target).closest('tr').css('background-color', $(event.target).val() == 'approve' ? 'green' : 'red')
});
td {width:150px;text-align:center}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <thead>
    <tr>
      <th>Name</th><th>Lastname</th><th>Status</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Kevin</td><td>Spacey</td><td><input type = "radio" value = "approve" name = "status">approve</input><input type = "radio" value = "reject" name = "status">reject</input></td>
    </tr>
      <td>Nicolas</td><td>Cage</td><td><input type = "radio" value = "approve" name = "status">approve</input><input type = "radio" value = "reject" name = "status">reject</input></td>
    </tr>
      <td>Robert</td><td>Downey</td><td><input type = "radio" value = "approve" name = "status">approve</input><input type = "radio" value = "reject" name = "status">reject</input></td>
    </tr>
      <td>Chris</td><td>Evans</td><td><input type = "radio" value = "approve" name = "status">approve</input><input type = "radio" value = "reject" name = "status">reject</input></td>
    </tr>
  </tbody>
</table>

Другие вопросы по теме