2013-12-20 154 views
1

JSLint在第2行(使用for循环)时给了我一个“意外的”错误,并且此时它也停止扫描文件。为什么JSLint给我一个“Unexpected”。'“这个代码错误?

var form = document.form1; 
for (var i=0; i < form.elements.length; i++) { 
    // inner-loop code not included here 
} 

我在Chrome中查看了开发者控制台,而form.elements确实包含了我期望的内容。为什么JSLint给我这个错误?

我通过PhpStorm使用JSLint。

+2

它抱怨哪一行?您向他们展示了多行带有'.'的行。 –

+2

Crockford认为所有的声明都发生在函数的顶部。 'var form = document.form1,i = 0;'并将'i ++'改为'i + = 1' – robbmj

+2

你在'{...}'之间的for循环中有代码吗? –

回答

1

我无法在JSLint中重现您的问题。但是,由于JS没有块范围,而是功能范围,所以JSLint(Doug Crockford)推荐在函数顶部发生的所有变量声明。

另外,他建议不要使用++运营商,而是使用+= 1。尝试在JSLint中的下面的代码,并确保“承担浏览器”设置为真

function foo() { 
    'use strict'; 

    var form = document.form1, 
     i; 
    for (i = 0; i < form.elements.length; i += 1) { 
     window.console.log(i); 
    } 
} 
1

我们需要更多的信息才能真正回答这个问题。 HTML和所有的JS。如果发布的问题太长,您可以尝试在类似http://jsfiddle.net/

之类的服务中托管它。如果不能重现它,我会猜想document.form1不是您想要的。也许你的意思是document.forms。这样可以访问DOM中的所有表单作为htmlCollection,您可以像数组一样访问它。例如document.forms[1]。阅读更多在https://developer.mozilla.org/en-US/docs/Web/API/document.forms

相关问题