Javascript &引用;分配给未声明变量";当使用;对于(i=0;”;

Javascript &引用;分配给未声明变量";当使用;对于(i=0;”;,javascript,Javascript,嘿,我试图在HTML表单中获取所有输入字段的列表,但我得到以下错误(在Firebug中): ReferenceError:分配给未声明的变量i for(i=0;i不是说i未赋值,而是说它未声明。代码从不声明i变量,而是尝试给它赋值(在for循环的初始化部分)。显然,您使用的是严格模式(很好!),因此引擎会给您一个错误,而不是创建一个错误 在函数中使用var声明i,例如: function listinputs() { var form = document.getElementById

嘿,我试图在HTML表单中获取所有输入字段的列表,但我得到以下错误(在Firebug中):

ReferenceError:分配给未声明的变量i

for(i=0;i不是说
i
未赋值,而是说它未声明。代码从不声明
i
变量,而是尝试给它赋值(在
for
循环的初始化部分)。显然,您使用的是严格模式(很好!),因此引擎会给您一个错误,而不是创建一个错误

在函数中使用
var
声明
i
,例如:

function listinputs() 
{
    var form = document.getElementById("wholeform");
    var inputs = form.childNodes;
    var i; // <=================================== Here
    for (i=0 ; i<inputs.length; i++)
    {
        string=string + inputs[i].nodeName + "<br>";
        here = document.getElementsByTagName("p");
        here.innerHTML(string);
    }
}
函数listinputs()
{
var form=document.getElementById(“wholeform”);
var输入=form.childNodes;
变量i;//
用于(变量i=0;i错误消息

ReferenceError:分配给未声明的变量“x”(Firefox)
ReferenceError:x未定义(Chrome)
ReferenceError: 严格模式下未定义的变量(边)

无效案例
在这种情况下,变量“bar”是未声明的变量

function foo() { 
  'use strict'; 
  bar = true; 
} 
foo(); // ReferenceError: assignment to undeclared variable bar
有效案例
要使“”成为声明变量,可以在其前面添加var关键字

function foo() {
  'use strict';
  var bar = true;
}
foo();

对于(var i=0;…您需要使用var
var here=document.getElementsByTagName(“p”);here.innerHTML(字符串)声明它;
应该在你的循环之外,顺便说一句。@PHPglue:是的,在循环之外,
getElementsByTagName
返回的列表没有
innerHTML
属性……我现在看到了。是的,那将是一个数组,你必须在其上运行另一个循环。噢,是的,我不确定我为什么错过了它。可能是因为3w学校的example“for(i=0;iYet)是不应该使用w3schools的另一个原因。如果它“需要”
var
,那么为什么
for(q=0;q@RUJordan这就是秘密!见T.J.的答案。啊,这是有道理的。
严格模式
==无全局==错误。如果您希望bar在全局范围内可用,那么var将不起作用。
for (var i=0; i<inputs.length; i++)
function foo() { 
  'use strict'; 
  bar = true; 
} 
foo(); // ReferenceError: assignment to undeclared variable bar
function foo() {
  'use strict';
  var bar = true;
}
foo();