document.forms.length里面的函数返回0,函数外部工作正常

时间:2011-08-12 18:26:43

标签: javascript forms dom

任何人都可以向我解释为什么以下代码在函数中不起作用但在函数之外它可以完美地工作吗?

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 个答案:

答案 0 :(得分:2)

你在那里的功能没有返回任何东西(即当你运行它时,它“返回”undefined)。试试这个:

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

另外,如果你只是在控制台中运行它,你仍然会得到undefined,因为你仍然没有调用这个功能。你只是创造它,但它仍然没有被执行。

如果要在控制台中运行它,可以编写

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

最后,如果你只是在控制台中写document.forms.length,控制台会显示值,因为length是一个变量。这就是为什么它似乎有效。

答案 1 :(得分:0)

这不能回答原因,但如果你将其归还,它就有效:

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