Объяснение
Хорошо, поэтому вместо того, чтобы иметь большой оператор if или большой оператор switch, вы можете установить атрибут HTML, содержащий соответствующий URL, в моем ответе вы можете видеть, что яб data-url
.Лично я нахожу этот очиститель для стороны JavaScript, это также означает меньше логики, которая будет обрабатываться во время выполнения JavaScript.
Учитывая функцию change
, вы ссылаетесь на радиокнопку, которая была нажата, вы можете просто получить доступ к атрибуту data-url
оттуда и просто обновить тег a
.
Еще одно замечание: использование тега a
над тегом кнопки / ввода имеет больше смысла, поскольку назначение тегов a
в значительной степени заключается в том, чтобы быть ссылкой на страницу, и я полагаю, что использование вашего оригинального подхода может вызвать некоторые ошибки,особенно в определенных браузерах, по крайней мере с тегом a
, вы знаете, это будет работать.
$('.radiogroup').change(function(e) {
const $this = $(this), $link = $("#url");
$link.html($this.val());
$link.attr("href", $this.attr("data-url"));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="radio" name="radiogroup" id="radiogroup1" class="radiogroup" value="Google" data-url="https://google.com" />
<input type="radio" name="radiogroup" id="radiogroup2" class="radiogroup" value="Bing" data-url="https://www.bing.com/" />
<a id="url" href="" target="_blank">null</a>
Редактировать
Это решение просто использует собственный JavaScript, ничего больше.
const a = document.getElementById("url");
const inputs = document.querySelectorAll('.radiogroup');
// A simple function to handle the click event for each input.
const clickHandler = i => {
a.href = i.getAttribute("data-url");
a.textContent = i.getAttribute("value");
};
// Possibly even less code again.
inputs.forEach(i => i.onclick = () => clickHandler(i));
<input type="radio" name="radiogroup" id="radiogroup1" class="radiogroup" value="Google" data-url="https://google.com" />
<input type="radio" name="radiogroup" id="radiogroup2" class="radiogroup" value="Bing" data-url="https://www.bing.com/" />
<a id="url" href="" target="_blank">null</a>