document.forms.length внутри функции возвращает 0, вне функции работает правильно - PullRequest
0 голосов
/ 12 августа 2011

Может ли кто-нибудь объяснить мне, почему следующий код не работает внутри функции, но вне функции он работает отлично?

function calculate_document_forms_length(){
    document.forms.length;
}

Запуск его из консоли возвращает «undefined», но когда япросто запустите document.forms.length из самой консоли, чтобы получить количество форм на странице.Я пытался понять, почему это не работает, но я не могу найти причину для этого.Бывает в Firefox, а также в Chrome.Я не вижу причин, по которым это не должно работать.

Отредактируйте, чтобы уточнить некоторые вещи.

Он запускается из консоли после завершения загрузки страницы.И следующее возвращает правильное значение.

document.forms.length;

Таким образом, я не знаю, почему он действует таким образом.

Хорошо, вот точный источник тестовой HTML-страницы.

<html>
  <head>
    <title>test page 01</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <body>
    <form>
        <input type="text" name="test1" />
    </form>
    <form>
        <input type="text" name="tes2" />
    </form>
  </body>
</html>

Как видите, в теге нет ни одного фрейма, ничего, кроме простого HTML и форм.

Ответы [ 2 ]

2 голосов
/ 12 августа 2011

Функция, которая у вас есть, ничего не возвращает (т.е. когда вы ее запускаете, она «возвращает» undefined).Попробуйте вместо этого:

function() {
    return document.forms.length;
}

Кроме того, если вы запустите только это в консоли, вы все равно получите undefined, потому что вы все еще не вызываете функцию.Вы просто создаете его, но он все еще не выполняется.

Если вы хотите запустить его в консоли, вы можете написать

(function() {
    return document.forms.length;
}());

Наконец, если вы просто напишите document.forms.length в консоли, консоль покажет вам значение, потому что length является переменной.Вот почему это, похоже, сработало.

0 голосов
/ 12 августа 2011

Это не ответит почему, но если вы вернете его, это сработает:

function aa(){
    return document.forms.length;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...