Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.07.2011, 12:16
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

Javascript и Radio
Здравствуйте!

Что имеем:

<input type="radio" name="q"><br>
<input type="radio" name="q"><br>
<input type="radio" name="q"><br>
<input type="button" id="w" value="Тык">


Как пытался:
if
(document.getElementsByName('q').checked == true)
  {document.getElementById('w').onclick=function()
    {alert ('Выбор сделан!');}
  }
else
{document.getElementById('w').onclick=function()
  {alert ('Choose your destiny!!');}
}


На выходе хотел получить:
При выборе одного из представленных выше radio и клике по кнопке вылетает "Выбор сделан", если ни один radio не выбран, то при клике вылетает "Choose your destiny!!".

Подскажите, пожалуйста, в чем ошибся?
Ответить с цитированием
  #2 (permalink)  
Старый 18.07.2011, 12:27
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

if
(*!*document.getElementsByName('q').checked*/!* == true)
*!*
  {document.getElementById('w').onclick=function()
    {alert ('Выбор сделан!');}
  }
*/!*
else
{document.getElementById('w').onclick=function()
  {alert ('Choose your destiny!!');}
}

  • тут нет обработчика события, тут сразу исполнение скрипта по мере загрузки страницы
  • getElementsByTagName возвратит NodeList*. ВСЕГДА
  • обработчики вешаются правильно, но по коду логика скрипта будет такой : по мере загрузки страницы проверяем у NodeList*, есть ли у него свойство checked (оно undefined), нет? вешаем обработчик на кнопку, который будет выводить сообщение о выборе судьбы.

Пример: Работающий пример
<input type="radio" name="q"><br>
<input type="radio" name="q"><br>
<input type="radio" name="q"><br>
<input type="button" id="w" value="Тык">

<script>
document.getElementById("w").onclick = function(){

if  (document.getElementsByName('q')[0].checked == true) {
    alert ('Выбор сделан!');
  } else {
      alert ('Choose your destiny!!');
  }
}
</script>

*Примечание :
NodeList похож на массив, потому что имеет свойство length и пронумерованные с нуля найденные элементы, к которым можно обращаться через list[number]

Последний раз редактировалось melky, 18.07.2011 в 12:31.
Ответить с цитированием
  #3 (permalink)  
Старый 18.07.2011, 12:47
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

Спасибо.
Еще такой вопрос: надо проверить на check'нутость все radio, соответственно, делать надо циклом...

<input type="radio" name="q"><br>
<input type="radio" name="q"><br>
<input type="radio" name="q"><br>
<input type="button" id="w" value="Тык">

<script>
document.getElementById("w").onclick = function(){
var z = document.getElementsByName('q'); 
for (var i = 0; i < z.length; i++)
  {
    if  (document.getElementsByName('q')[i].checked == true) {
      alert ('Выбор сделан!');
    } else {
        alert ('Choose your destiny!!');
    }
  }
}
</script>


Я понимаю, что неправильно сделал, но как правильно сделать, чтобы alert срабатывал после обработки всех radio а не после каждого я не понял...

Подскажите, пожалуйста, как должен выглядеть цикл...
Ответить с цитированием
  #4 (permalink)  
Старый 18.07.2011, 14:06
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

<input type="radio" name="q"><br>
<input type="radio" name="q"><br>
<input type="radio" name="q"><br>
<input type="button" id="w" value="Тык">

<script>
document.getElementById("w").onclick = function(){
var z = document.getElementsByName('q'),s='';
for (var i = 0; i < z.length; i++)
  {
    if  (document.getElementsByName('q')[i].checked == true) {
      s = 'Выбор сделан!';
    } else {
        s = 'Choose your destiny!!';
    }
  }
alert(s);
}
</script>


ну а теперь проблема с логикой. зачем проходиться по всем радио и постоянно дергать переменную?

наверное, целью было сделать так =>

<input type="radio" name="q"><br>
<input type="radio" name="q"><br>
<input type="radio" name="q"><br>
<input type="button" id="w" value="Тык">

<script>
document.getElementById("w").onclick = function(){
var z = document.getElementsByName('q'),s='';
for (var i = 0; i < z.length; i++)
  {
    if  (document.getElementsByName('q')[i].checked == true) {
      s = 'Выбор сделан!'; *!*break;*/!*;
    } else {
        s = 'Choose your destiny!!';
    }
  }
alert(s);
}
</script>

Последний раз редактировалось melky, 18.07.2011 в 14:09.
Ответить с цитированием
  #5 (permalink)  
Старый 18.07.2011, 14:37
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

Спасибо)
Ответить с цитированием
  #6 (permalink)  
Старый 18.07.2011, 15:02
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,210

melky, малость подправлю...

<input type="radio" name="q"><br>
<input type="radio" name="q"><br>
<input type="radio" name="q"><br>
<input type="button" id="w" value="Тык">

<script>
document.getElementById("w").onclick = function(){
var z = document.getElementsByName('q'),s='Choose your destiny!!';
for (var i = 0; i < z.length; i++)  {
    if  (z[i].checked) {
      s = 'Выбор сделан!'; break;
    }
}
alert(s);
}
</script>
Ответить с цитированием
  #7 (permalink)  
Старый 18.07.2011, 15:16
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

я отвечу тебе странностью
извини, меня сегодня просто прёт на call и прототипы массива (извращения).. и на "соперничество"

<input type="radio" name="q"><br>
<input type="radio" name="q"><br>
<input type="radio" name="q"><br>
<input type="button" id="w" value="Тык">

<script>
document.getElementById("w").onclick = function(){

var s = Array.prototype.every.call( 

                document.getElementsByName('q'),
                function(a){ return !a.checked }

) ? 'Choose your destiny!!' : 'Выбор сделан!';

alert(s);
}
</script>

Последний раз редактировалось melky, 18.07.2011 в 15:20.
Ответить с цитированием
  #8 (permalink)  
Старый 19.07.2011, 10:03
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

Снова ничего путного у меня не выходит...

Надо сделать такое условие:

Если выбран один из radio - то кнопка в онклике получает переход по ссылке

Если не выбран - по клику срабатывает алерт...


Подскажите, пожалуйста, логику, на основе которой надо код писать, очень хочется хоть от часть свой код наваять и немного самому подумать...
Ответить с цитированием
  #9 (permalink)  
Старый 19.07.2011, 11:40
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,210

Сообщение от Viral
Если выбран один из radio - то кнопка в онклике получает переход по ссылке
Если не выбран - по клику срабатывает алерт...
Как вариант...

<input type="radio" name="q"><br>
<input type="radio" name="q"><br>
<input type="radio" name="q"><br>
<input type="button" id="w" value="Тык">

<script>
document.getElementById("w").onclick = function(){
var z = document.getElementsByName('q'),s=false
for (var i = 0; i < z.length; i++)  {
    if  (z[i].checked) {
      s = true; break;
    }
}
if (s) {
   top.location='http://javascript.ru/forum/dom-window/18853-javascript-i-radio.html#post114146'
} else {
   alert('Choose your destiny!!');
}
}
</script>
Ответить с цитированием
  #10 (permalink)  
Старый 19.07.2011, 11:43
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

if (s) - это "если s=true"??
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Книга] Stoyan Stefanov, Javascript Patterns Dmitry A. Soshnikov Учебные материалы 20 13.08.2013 11:37
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34
Как узнать value radio button-a из javascript kaaron jQuery 1 17.02.2009 15:34
Как узнать value radio button-a из javascript kaaron Общие вопросы Javascript 1 17.02.2009 13:25