Ничего удивительного, если перевести ваши селекторы на русский язык, то проблема станет сразу ясна:
Если есть элемент с id "id-1" и на нём нажата галочка, тогда элементу после него с id "msk", ИЛИ
Если есть элемент с id "id-2" и на нём нажата галочка, тогда элементу после него с id "ekb", ИЛИ
Если есть элемент с id "id-3" и на нём нажата галочка, тогда элементу после него с id "hbr",
применить следующие стили: {
display: block;
}
То есть чтобы селекторы заработали у вас должна быть вот такая разметка:
#msk,
#ekb,
#hbr {
display: none;
}
#id-1:checked ~ #msk,
#id-2:checked ~ #ekb,
#id-3:checked ~ #hbr {
display: block;
}
<div class="radio-button">
<label for="id-1">МСК</label>
<input class="radio_option" type="radio" name="input_radio" id="id-1" checked>
<label for="id-2">ЕКБ</label>
<input class="radio_option" type="radio" name="input_radio" id="id-2">
<label for="id-3">ХБР</label>
<input class="radio_option" type="radio" name="input_radio" id="id-3">
<span id="msk">9:00 до 20:00</span>
<span id="ekb">7:00 до 18:00</span>
<span id="hbr">5:00 до 14:00</span>
</div>
<div class="table">
<table>
<tbody class="elastic">
<tr>
<td>Мы работаем во столько</td>
</tr>
</tbody>
</table>
</div>
Так что исправляем селекторы и разметку, чтобы получилось вот так:
#msk,
#ekb,
#hbr {
display: none;
}
#id-1:checked ~ .table #msk,
#id-2:checked ~ .table #ekb,
#id-3:checked ~ .table #hbr {
display: block;
}
<label for="id-1">МСК</label>
<input class="radio_option" type="radio" name="input_radio" id="id-1" checked>
<label for="id-2">ЕКБ</label>
<input class="radio_option" type="radio" name="input_radio" id="id-2">
<label for="id-3">ХБР</label>
<input class="radio_option" type="radio" name="input_radio" id="id-3">
<div class="table">
<table>
<tbody class="elastic">
<tr>
<td>Мы работаем во столько</td>
<td id="msk">9:00 до 20:00</td>
<td id="ekb">7:00 до 18:00</td>
<td id="hbr">5:00 до 14:00</td>
</tr>
</tbody>
</table>
</div>
В итоге, если также переводить на русский язык, то получается что-то такое:
Если есть элемент с id "id-1" и на нём нажата галочка, тогда элементу с id "msk", который является ребёнком элемента с классом "table", ИЛИ
Если есть элемент с id "id-2" и на нём нажата галочка, тогда элементу с id "ekb", который является ребёнком элемента с классом "table", ИЛИ
Если есть элемент с id "id-2" и на нём нажата галочка, тогда элементу с id "hbr", который является ребёнком элемента с классом "table",
применить следующие стили {
display: block;
}
Вариант на JavaScript где не придётся убирать элемент(ы)
class ShowById {
static init(radioButtonParent) {
let radioButtons = radioButtonParent.children // Сохраняем детей родителя
showElemsIfChecked() // Запускаем проверку изначально
function showElemsIfChecked() {
for (let i = 0; i < radioButtons.length; i++) {
let radioButton = radioButtons[i] // Текущая кнопка
radioButton.addEventListener('change', showElemsIfChecked, { once: true, }) // Ставим слушатель событий, чтобы проверять элемент на изменение в будующем. Ставим `once: true` чтобы избежать утечки памяти
if (radioButton.dataset && radioButton.dataset.showId) { // Проверяем есть ли нужный атрибут `data-show-id`
let elemId = radioButton.dataset.showId // id элемента которого мы будем искать
let elem = document.getElementById(elemId) // Сам элемент который будет скрываться/показываться
if (elem) { // Проверяем есть ли элемент, чтобы не выскочила ошибка
if (radioButton.checked) { // Если галочка нажата, показываем элемент
elem.style.display = 'block'
} else { // Иначе скрываем
elem.style.display = 'none'
}
}
}
}
}
}
}
// Пример использования
let buttons = document.querySelector('.radio-button') // Родитель radio инпутов
ShowById
.init(buttons)
#msk,
#ekb,
#hbr {
display: none;
}
<div class="radio-button">
<label for="id-1">МСК</label>
<input class="radio_option" type="radio" name="input_radio" id="id-1" checked data-show-id="msk">
<label for="id-2">ЕКБ</label>
<input class="radio_option" type="radio" name="input_radio" id="id-2" data-show-id="ekb">
<label for="id-3">ХБР</label>
<input class="radio_option" type="radio" name="input_radio" id="id-3" data-show-id="hbr">
</div>
<div class="table">
<table>
<tbody class="elastic">
<tr>
<td>Мы работаем во столько</td>
<td id="msk">9:00 до 20:00</td>
<td id="ekb">7:00 до 18:00</td>
<td id="hbr">5:00 до 14:00</td>
</tr>
</tbody>
</table>
</div>