Как работает страница:
Пользователь заполняет регистрационную форму (имя, фамилия, возраст...).
Администратор может видеть все эти значения и либо одобрять, либо отклонять каждое из них, щелкнув соответствующий переключатель.
Что я хочу:
В моем файле .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"
});
}
во-первых, поскольку вы используете jquery, вам не нужно использовать чистые методы js getElementById()
@ygorbunkov, почему бы и нет? Я часто смешиваю их, поскольку некоторые нативные js-вещи просто быстрее и эффективнее, чем их альтернатива jquery - только потому, что вы используете jQuery, не означает, что вы должны игнорировать нативные js, если они лучше в определенных обстоятельствах (предоставлено здесь, кажется, впустую )
@user1597430 user1597430 Хм, я не совсем понимаю, что вы имеете в виду. Не могли бы вы уточнить, пожалуйста?
@Ranga классический способ - создать стиль CSS для определенного класса и использовать JS только для добавления или удаления класса из элемента.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это то, что вы имели ввиду?
$('[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>
Почему вы не можете использовать CSS для установки цвета фона для определенного класса?