ФорумПрограммированиеJavaScript → помогите с радио-переключателями

помогите с радио-переключателями

  • Rotten

    Сообщения: 2243 Репутация: N Группа: Адекваты

    Spritz 23 ноября 2008 г. 12:13

    тривиальная задачка…по самое немогу……..
    но почемуто не фурычит…

    у нас есть форма с радиопереключателями…..
    имя у них естессно одинаковое…(допустим "otv")…

    у каждого "otv" есть разные value…в моем случае это цыфры с одого до 5ти….
    ни на одно по дефолту не стоит - чекед…

    мне надо немного…всего лишь вывести выбранное значение (с 1 по 6) методом алерт….

    я вообщето сделал даже как в книжке…..(а там зачастую должна же быть правда :D)

    вообщем так
    форма:
    <form onsubmit="return false" method=post >
    <table align=center cellpadding=0 border=0>

    <tr><td><input type=radio name=otv value=1></td>
    <td>Просто супер!</td></tr>
    <tr><td><input type=radio name=otv value=2></td>
    <td>Нормальный.</td></tr>
    <tr><td><input type=radio name=otv value=3></td>
    <td>Так себе.</td></tr>
    <tr><td><input type=radio name=otv value=4></td>
    <td>Мне все равно.</td></tr>
    <tr><td><input type=radio name=otv value=5></td>
    <td>Плохой.</td></tr>
    <tr><td><input type=radio name=otv value=6></td>
    <td>Хуже не видел!</td></tr>
    <tr><td colspan=2 align=center>
    <input type=button name=g value="Нажать" onClick= "getindex()">


    скрипт обработки:
    <script type="text/javascript">
    function getindex()
    { var f = document.forms[0];
    for(var i=0; i<f.otv.lenght; i++)
    {
    if (f.otv.checked)
    {
    break ;
    }
    }
    var d = f.otv.value ;
    alert(d) ;
    }
    </script>

    Беда, товарищи, но не работает……
    всегда выводит значение 1.
    тоесть фактически первый елемент массива otv.
    я с яваскриптовским синтаксисом не очень знаком…..вообщето…
    но тут ошыбка гдето не в синтаксисе….а структуре кода видимо…..
    …..пример взят из известной "Библии пользователя по яваскрипте"(той в которой поза 1000 страниц)
    я там кстати разными способами пробовал…..но не рожает почемуто….
    может переменная "i" после цыкла умирает, или как понять это?



  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 23 ноября 2008 г. 12:19, спустя 5 минут 43 секунды

    ошыбка
    в школу бы вас.
    Сапожник без сапог
  • Rotten

    Сообщения: 2243 Репутация: N Группа: Адекваты

    Spritz 23 ноября 2008 г. 12:20, спустя 1 минуту 4 секунды

    да наверное не ток меня, но и автора книги заодно))
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 23 ноября 2008 г. 12:20, спустя 38 секунд

    цыкла
    пиздец.
    Сапожник без сапог
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 23 ноября 2008 г. 12:21, спустя 1 минуту 2 секунды

    короче document.forms[] - и form.otv - совковые костыли. юзай document.getElementById + document.getElementsByName
    Сапожник без сапог
  • Rotten

    Сообщения: 2243 Репутация: N Группа: Адекваты

    Spritz 23 ноября 2008 г. 13:13, спустя 51 минуту 18 секунд


    function getindex()
    {
    var el = document.getElementsByName("otv");
    for(var i=0; i<el.lenght; i++)
    {
    if (el.checked)
    {
    break ;
    }


    }
    var d = el.value ;
    alert(d) ;
    }



    то же самое…(……..
    учитывая то что getElementsByName я походу применил правильно…

    вот..в какойто документации было..

    "getElementsByName("имя")

    Метод возвращает массив ссылок на объекты, атрибут name которых определяет имя элемента и передаётся как параметр для метода. Рекомендуется использовать данный метод только для явно определённых имён. Если элементов с данным именем метод в докумете не находит, он возвращает массив нулевой длины.

    Пример:

    var RadioButtonGroup = document.getElementsByName("radioGroupName");

    Возвращаемое значение:
    Массив объектов

    Параметры
    имя Имя, присвоенное в дескрипторе или сценарии"


    тут не в этом дело……
    мож у мя браузер шото не того……

  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 23 ноября 2008 г. 13:15, спустя 2 минуты 49 секунд

    function getindex()
    {
    var el = document.getElementsByName("otv");
    for(var i=0; i<el.lenght; i++)
    {
    if (el.checked)
    {
    d = el.value ;
    break ;
    }
    }
    alert(d) ;
    }


    попробуй. и на будущее, форматируй код, гавнопортянки читать нихуя не приятно :(

    если прсишь помощи, будь добр хотя бы подготовиться)
    Сапожник без сапог
  • Rotten

    Сообщения: 2243 Репутация: N Группа: Адекваты

    Spritz 23 ноября 2008 г. 13:26, спустя 11 минут 4 секунды

    спасибо камрад, пробовал…и так даже
    но дебагер пищит что переменная d неопределена(d is not defined
    [Break on this error] alert(d) ;)

    лан…..спасибо хоть за это…

    а на счет оформления - я в курсе, что читать это неподобство тяжко(правда там того кода - как кот наплакал)
    просто ни разу кодов еще не отправлял….
    буду придерживаться стандартов и правил в дальнейшем.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 23 ноября 2008 г. 13:35, спустя 8 минут 25 секунд

    а по теме

    function getindex()
    {
    var el = document.getElementsByName("otv");
    for(var i=0; i<el.lenght; i++)
    {
    if (el.checked)
    {
    d = el.value ;
    break ;
    }
    }
    alert(d) ;
    }


    форматируйте и найдете ошибку сразу ;) это я вам и правда советую

    ошибка тут.


    el.lenght а надо el.length, да согласен ебучее слово, сам раньше так постоянно ошибался)
    Сапожник без сапог
  • Rotten

    Сообщения: 2243 Репутация: N Группа: Адекваты

    Spritz 23 ноября 2008 г. 13:42, спустя 7 минут 11 секунд

    шобы меня кони гралы………..это ж надо……..))))))))
    ну елки палки………..я то думаю в чем дело…
    канешн…в пхп всегда использовал count а не length, а тут вот тебе на)))…

    я очень извиняюсь….за неграмотность (и всетаки синтаксис)…..
    спасибо…..за внимание и может даже за потрепанные нервы…
    очень благодарен..
    теперь буду смотреть на это бдительнее…
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 23 ноября 2008 г. 13:49, спустя 6 минут 59 секунд

    форматируй код, ошибок будет меньше, это не шутка )))

    реальни памагает)

    ну и конечно школу надо закончить "ошыбка "
    Сапожник без сапог
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 23 ноября 2008 г. 14:30, спустя 41 минуту 14 секунд

    el.lenght а надо el.length, да согласен ебучее слово, сам раньше так постоянно ошибался)


    +1, а еще я часто на label туплю…. пишу lable //автоматом сцуко :)
    adw/0
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 23 ноября 2008 г. 14:33, спустя 3 минуты 5 секунд

    да бывает, но с опытом реже, с опытом скорее от усталости и сидения в 4 часа ночи за работой такие ошибки бывают :-D

    а ошибка стандартная, в этом случае count - удобнее, с ним не наебешься)

    а в .net еще проще, там всегда .count для всех ICollection.
    Сапожник без сапог
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 23 ноября 2008 г. 14:48, спустя 14 минут 19 секунд

    а ошибка стандартная, в этом случае count - удобнее, с ним не наебешься)

    sizeOf
    adw/0
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 23 ноября 2008 г. 14:54, спустя 6 минут 46 секунд

    ути микрооптимизаторы ….. …. заметная разница на переборее больее 5000(даже 10000) элементов. мой сервер делает


    motango:~# time php -r 'for($i=0;$i<10000000;$i++) { rand(0,10000000); };'

    real 0m2.420s
    user 0m2.412s
    sys 0m0.008s


    а вы говорите про sizeof :-D

    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!