|
25.03.2016, 09:44
|
Новичок на форуме
|
|
Регистрация: 25.03.2016
Сообщений: 8
|
|
Как к вызову функции по onclick добавить еще одно условие?
Дано: кнопка и некая функция, которая вызывается по нажатию этой кнопки. Вопрос: как к вызову функции по событию "прикрутить" радиокнопку?
<html>
<body>
<button id="but_id">click me</button>
<input type=radio name='radiobutton' value="1" id="labeled_1" checked/>
<input type=radio name='radiobutton' value="2" id="labeled_2"/>
</body>
<script>
function myAlert() {
alert("Функция вызвана");
}
var stateRadio = document.getElementById('labeled_1').value; // состояние радиокнопки
// радиокнопку надо "прикрутить" на условие вызова функции как-то так:
<stateRadio==1> И <but_id.onclick> = myAlert;
</script>
</html>
P.S. Не стреляйте в нуба - он пишет как умеет )
Последний раз редактировалось dry fig, 25.03.2016 в 11:29.
|
|
25.03.2016, 10:05
|
Кандидат Javascript-наук
|
|
Регистрация: 22.03.2016
Сообщений: 132
|
|
//радиокнопку надо "прикрутить" на условие вызова функции:
but_id.onclick = myAlert;
labeled_1.onclick = myAlert;
labeled_2.onclick = myAlert;
|
|
25.03.2016, 10:17
|
Новичок на форуме
|
|
Регистрация: 25.03.2016
Сообщений: 8
|
|
Strongman,
Может быть, я недостаточно точно сформулировал свой вопрос. Мне надо, чтобы функция вызывалась только в случае, если радиокнопка в определенном состоянии И нажата кнопка. В Вашем случае реализовано по "ИЛИ".
|
|
25.03.2016, 10:30
|
|
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
<button id="but_id">click me</button>
<input type=radio name='radiobutton' value="1" id="labeled_1" />
<input type=radio name='radiobutton' value="2" id="labeled_2" />
<script>
document.getElementById('but_id').onclick = function () {
!!document.querySelector('input[type=radio]:checked') && alert("Функция вызвана");
}
</script>
|
|
25.03.2016, 10:54
|
Новичок на форуме
|
|
Регистрация: 25.03.2016
Сообщений: 8
|
|
destus, спасибо.
А как сделать то же самое, но:
а) используя не querySelector, а только id?
б) чтобы решение имело вид <событие onclick кнопки> И <value радиокнопки==1> = вызов функции;
Последний раз редактировалось dry fig, 25.03.2016 в 11:03.
|
|
25.03.2016, 11:26
|
|
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
Цитата:
|
А как сделать то же самое, но:
а) используя не querySelector, а только id?
|
<button id="but_id">click me</button>
<input type=radio name='radiobutton' value="1" id="labeled_1" />
<input type=radio name='radiobutton' value="2" id="labeled_2" />
<script>
document.getElementById('but_id').onclick = function () {
(!!(document.getElementById('labeled_1').checked || document.getElementById('labeled_2').checked)) && alert("Функция вызвана");
}
</script>
Цитата:
|
б) чтобы решение имело вид <событие onclick кнопки> И <value радиокнопки==1> = вызов функции;
|
<button id="but_id">click me</button>
<input type=radio name='radiobutton' value="1" id="labeled_1" />
<input type=radio name='radiobutton' value="2" id="labeled_2" />
<script>
document.getElementById('but_id').onclick = function () {
var radio = document.getElementsByName('radiobutton');
if ([].some.call(radio, function (el) {
if (el.checked && +el.value === 1)
return true;
}))
alert("Функция вызвана");
}
</script>
|
|
25.03.2016, 11:37
|
Новичок на форуме
|
|
Регистрация: 25.03.2016
Сообщений: 8
|
|
destus, но у Вас радиокнопка проверяется в теле функции, а мне надо наоборот, снаружи:
<stateRadio==1> И <but_id.onclick> = myAlert;
И обращаться к радиокнопке надо не по имени, а по id.
|
|
25.03.2016, 12:41
|
Новичок на форуме
|
|
Регистрация: 25.03.2016
Сообщений: 2
|
|
but_id.onclick = function(){
labeled_1.checked && alert(1)
}
|
|
25.03.2016, 13:58
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Сообщение от dry fig
|
destus, но у Вас радиокнопка проверяется в теле функции, а мне надо наоборот, снаружи:
<stateRadio==1> И <but_id.onclick> = myAlert;
И обращаться к радиокнопке надо не по имени, а по id.
|
Выбранная радиокнопка - это состояние, а нажатие на кнопку - это событие, поэтому состояние радиокнопок проверяется внутри обработчика события нажатия на кнопку.
|
|
26.03.2016, 13:45
|
Кандидат Javascript-наук
|
|
Регистрация: 22.03.2016
Сообщений: 132
|
|
Сообщение от newcoolguru
|
but_id.onclick = function(){
labeled_1.checked && alert(1);}
|
Так как у Вас не работает, вот так работает:
but_id.onclick = function(){
if(labeled_1.checked) myAlert();}
|
|
|
|