Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Ошибка Uncaught TypeError: Cannot read property 'elements' of undefined (https://javascript.ru/forum/misc/30241-oshibka-uncaught-typeerror-cannot-read-property-%27elements%27-undefined.html)

Allality 28.07.2012 19:48

Ошибка Uncaught TypeError: Cannot read property 'elements' of undefined
 
Пытаюсь собрать данные большой формы, с помощью кода, которым поделился программер, но все время получаю странную ошибку. Chrome выдает такой текст:

Uncaught TypeError: Cannot read property 'elements' of undefined

Сам код:

var str = '';
for(i=0; i < document.parametry.elements.length; i++)
{
   str += document.parametry.elements[i].name + '=' + encodeURIComponent(document.parametry.elements[i].value) + '&';
}
str = str.substring(0, str.length-1);
alert(str);


При этом, когда ввожу в консоли Chrome это:
document.parametry.elements.length

Получаю ответ - число 7.

Подскажите, в чем может быть проблема? Почему страница не работает, а консоль того же браузера прекрасно определяет значение переменной?

lord2kim 28.07.2012 19:50

Allality, скорее всего какого-либо атрибута (name, value) не существует у какого-то элемента формы...
проверяйте на существование атрибутов...

vadim5june 28.07.2012 19:56

Цитата:

Сообщение от Allality (Сообщение 192439)
При этом, когда ввожу в консоли Chrome это:
document.parametry.elements.length

Получаю ответ - число 7.

Подскажите, в чем может быть проблема? Почему страница не работает, а консоль того же браузера прекрасно определяет значение переменной?

у меня document.parametry=undefined и на странице и в консоли хрома

Allality 28.07.2012 19:58

Цитата:

Сообщение от lord2kim (Сообщение 192441)
Allality, скорее всего какого-либо атрибута (name, value) не существует у какого-то элемента формы...
проверяйте на существование атрибутов...

Попробовал простую форму:

<form name="parametry">
<input name="aaa" value="10" />
</form>


Та же ошибка...

lord2kim 28.07.2012 19:58

vadim5june, это имя формы, по всей видимости...

lord2kim 28.07.2012 20:00

Allality,
<form name="parametry">
<input name="aaa" value="10" />
</form>
<script>
var str = '';
for(i=0; i < document.parametry.elements.length; i++)
{
   str += document.parametry.elements[i].name + '=' + encodeURIComponent(document.parametry.elements[i].value) + (i == document.parametry.elements.length -1 ? '' : '&');
}
alert(str);
</script>

Allality 28.07.2012 20:06

Скопировал ваш текст, работает. Выношу <script> часть в <head> документа - опять получаю ошибку... :blink:

lord2kim 28.07.2012 20:07

Allality, либо заворачивайте в функцию, либо размещайте после определения самой формы, т.к. на момент вызова (document.parametry.elements.length) не существует вашей формы parametry

Allality 28.07.2012 20:08

Цитата:

Сообщение от lord2kim (Сообщение 192452)
Allality, либо заворачивайте в функцию, либо размещайте после определения самой формы, т.к. на момент вызова (document.parametry.elements.length) не существует вашей формы parametry

Попробую в функцию завернуть. Спасибо огромное за помощь. :)

vadim5june 28.07.2012 20:09

window.onload=function(){}


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