Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Помогите получить информацию из формы [Noobville] (https://javascript.ru/forum/events/28145-pomogite-poluchit-informaciyu-iz-formy-%5Bnoobville%5D.html)

Mephistopelus 09.05.2012 13:06

Помогите получить информацию из формы [Noobville]
 
Ради практики сделал простенький скриптик для перевода скорости интернет-соединения в скорость загрузки информации. Собрал вот такую страничку, но не могу получить ни одного значения из формы. Получаю только "undefined" (вывел консоль).

Исходный код есть и на Pastebin, если кому так удобней.

Объясните, пожалуйста, мои ошибки. Может, можно сделать лучше? (jQuery пока не трогаю).

P.S. Javascript, HTML и CSS учу буквально пару месяцев. До этого опыта в программировании небыло.

Octane 09.05.2012 16:42

fromValue, fromOption, toValue и toOption примитивные строковые значение, они никак не будут синхронизироваться с изменениями в соответствующих полях ввода. Получайте эти значения в функции converter, а не сразу при запуске скрипта.

Может быть будет полезно прочитать: http://javascript.ru/forum/misc/5731...h-obektov.html чтобы не возникло путаницы с ссылками на объекты.

Mephistopelus 09.05.2012 17:29

Цитата:

Сообщение от Octane (Сообщение 173433)
fromValue, fromOption, toValue и toOption примитивные строковые значение, они никак не будут синхронизироваться с изменениями в соответствующих полях ввода. Получайте эти значения в функции converter, а не сразу при запуске скрипта.

Может быть будет полезно прочитать: http://javascript.ru/forum/misc/5731...h-obektov.html чтобы не возникло путаницы с ссылками на объекты.

Спасибо! Поправил.

А вот сама функция неработала по другой причине — «цеплять» данные из формы нужно было по
названиеФормы.elements.названиеЭлемента

Теперь мой конвертер работает как положено :)

Mephistopelus 09.05.2012 18:35

Подскажите, кто-нибудь, как можно заставить этот конвертер работать в обоих направлениях?

bes 09.05.2012 18:38

Цитата:

Сообщение от Mephistopelus
А вот сама функция неработала по другой причине — «цеплять» данные из формы нужно было по
названиеФормы.elements.названи еЭлемента

Обращение по id намного короче.

<input id="inp" value="show must go on">
<input type="button" value="Show value" onclick="alert(inp.value)">

Octane 11.05.2012 08:43

bes, это не кросс-браузерно

bes 11.05.2012 09:32

Octane, в каких браузерах не срабатывает (в хроме и IE работает)?

Octane 11.05.2012 09:42

В Firefox будет работать только в Quirks Mode

bes 11.05.2012 10:01

Тем не менее способ очень даже логичный
(недавно на одной из тем его для себя открыл, до той темы считал, что можно использовать только document.getElementById('') для обращения через id),
так как идентификация элемента через id, на мой взгляд, является главным (хотя и не единственным) способом идентификации этого элемента,
также как и имя у переменной, так зачем городить конструкции вроде document.getElementById('').

Octane 11.05.2012 11:29

Идентификаторы вообще не нужны

bes 11.05.2012 11:56

Цитата:

Сообщение от Octane
Идентификаторы вообще не нужны

Чем обоснуете?

Octane 11.05.2012 12:16

Очевидно, тем что на станице может быть несколько одинаковых функциональных блоков, а код, завязанный на идентификаторах, будет работать только с одним из них.

bes 11.05.2012 12:35

Цитата:

Сообщение от Octane
Очевидно, тем что на станице может быть несколько одинаковых функциональных блоков, а код, завязанный на идентификаторах, будет работать только с одним из них.

Код, завязанный на обращении к элементам через их положение на странице, не более универсален.
Ситуации разные, в каждом конкретном случае приходится выбирать, что удобнее.

Octane 11.05.2012 12:48

Зачем привязывать к положению на странице? Достаточно искать элементы по CSS-классам или другим атрибутам внутри указанных контейнеров.

bes 11.05.2012 12:58

Цитата:

Сообщение от Octane
Достаточно искать элементы по CSS-классам или другим атрибутам внутри указанных контейнеров.

А к этим указанным контейнерам тогда как обращаться? (как раз по id бы подошло, так как id это как раз тот другой атрибут внутри контейнера).

Octane 11.05.2012 13:06

Так же по CSS-классам)
Идентификаторы нужны только чтобы якоря на страницах делать.

bes 11.05.2012 13:28

Цитата:

Сообщение от Octane
Идентификаторы нужны только чтобы якоря на страницах делать.

Но ведь нужны же.

Kolyaj 11.05.2012 13:43

Цитата:

Сообщение от Octane
Идентификаторы нужны только чтобы якоря на страницах делать.

Ещё label привязывать к контролам.

Octane 11.05.2012 13:55

Да я помню про это, но IE6 уже никому не нужен, а остальные браузеры умеют ставить фокус в поле внутри label. Конечно могут быть варианты верстки, когда неудобно, чтобы input был внутри label, обычно так делают, чтобы реализовать placeholder, наложив label поверх input'а.


Часовой пояс GMT +3, время: 19:59.