Javascript JSLINT关于样式的警告或关于条件表达式的错误

Javascript JSLINT关于样式的警告或关于条件表达式的错误,javascript,debugging,conditional,expression,jslint,Javascript,Debugging,Conditional,Expression,Jslint,我试图修正JSLINT警告的两件事,我不知道如何修正。哪一行应该替换为什么代码?我已经在下面粘贴了有问题的代码和关于它们的警告。非常感谢您的建议/回答 JSLINT说: 第137行出现问题:应为条件表达式,而不是赋值 while(elem=document.getElementById(“optionsDiv”+g)) 第140行出现问题:应为“{”,而应为“return” 返回g; 条件没有任何错误,只是elem可能是全局的,如果它没有在外部范围中声明。如果它没有声明,请提前声明: var

我试图修正JSLINT警告的两件事,我不知道如何修正。哪一行应该替换为什么代码?我已经在下面粘贴了有问题的代码和关于它们的警告。非常感谢您的建议/回答

JSLINT说:

第137行出现问题:应为条件表达式,而不是赋值

while(elem=document.getElementById(“optionsDiv”+g))

第140行出现问题:应为“{”,而应为“return”

返回g;



条件没有任何错误,只是
elem
可能是全局的,如果它没有在外部范围中声明。如果它没有声明,请提前声明:

var elem, g=0;    
如果想让JSLint满意,可以向null添加显式比较:

while((elem = document.getElementById("optionsDiv"+g)) !== null)
我没有看到任何关于“Expected{”的内容。但是,将g++放在大括号的同一行是一种奇怪的风格

请记住,JSlint在一定程度上与Crockford的个人偏好有关,您不必总是同意

编辑:好的,第二个错误是因为JSLint希望您将返回值放在大括号中,例如:

    if(elem.className==="optionsDivVisible")
    {
        return g;
    }
    g++;

这也是我喜欢的编码风格。我确实发现它避免了某些错误。然而,这又是主观的。明显的折衷是它增加了两行。

+1 Mattjew,很抱歉我不小心放了自己的测试版本,请查看旧代码,这样错误就更清楚了(我只是随便在某个地方放了一个括号,不应该在我的问题中)很好奇你可能会改变答案和更好地放置卷曲括号,如果有的话!太棒了@Matthew谢谢!PS你的名字让我想起了我最喜欢的美国喜剧XNYX新闻广播中的角色。这就像《宋飞正传》更容易被聪明的观众理解。听说过WNYX新闻广播吗?@Sam,听说过,但从未看过。
    if(elem.className==="optionsDivVisible")
    {
        return g;
    }
    g++;