Javascript работает в JSFiddle - Браузер говорит «Не определено» - PullRequest
1 голос
/ 12 октября 2011

Я писал здесь раньше и получил отличный ответ - однако при дальнейшем использовании код показывает ошибки в Firebug и не работает должным образом при тестировании.

Оригинальный вопрос .

Решение JSFiddle

Ошибка Firebug показывает: document.getElementsByName ("licenseAgreement") [0] не определено (строка 1)

Любая помощь была бы чудесной.

1 Ответ

1 голос
/ 12 октября 2011

Многочисленные проблемы. Наиболее вероятная основная проблема заключается в том, что вы запускаете свой код до загрузки страницы, и, таким образом, объект licenseAgreement еще не действителен. Вот краткое изложение того, что вы должны изменить.

Во-первых , этот код не будет работать в IE до IE9 по нескольким причинам. getElementsByName не поддерживается должным образом в IE, а addEventListener вообще не поддерживается до IE9. Вам придется использовать attachEvent с IE и addEventListener в других браузерах. См. JsFiddle ниже для кода, чтобы сделать это.

Второй , я бы предложил вам изменить на document.getElementById() и дать вашим целевым элементам значение id вместо значения name. Это даст вам точный элемент, который вы хотите, и поддерживается кросс-браузер. См. JsFiddle ниже, чтобы узнать, как использовать getElementById.

Третий , вы не показываете нам фактическую рабочую страницу, но я предполагаю, что вы запускаете свой код, чтобы прикрепить eventListener до завершения загрузки страницы, что будет означать, что она не удается найти объект licenseAgreement, поскольку он еще не был проанализирован и загружен на страницу. Просто предположение, так как вы не показали нам реальную страницу, которая терпит неудачу. Вы можете либо переместить код инициализации в конец тела HTML, либо не можете вызывать его до тех пор, пока страница не загрузится, перехватив событие загрузки страницы и вызвав его оттуда. Ваш jsFiddle может работать, потому что вы указали в jsFiddle, что не хотите, чтобы ваш код выполнялся до загрузки страницы (функция jsFiddle).

...