22

在尝试调试时,我收到此行的“长度”空错误。它是按照书上的说明写的,所以我不明白为什么它会给我错误?谢谢,=)

if (capital.length < 1) {

(这是所要求的完整代码..抱歉)

<script type="text/javascript">
var capital = window.prompt("What is the capital of Missouri?","")

if (capital.length < 1) {
    document.getElementById("firstdiv").innerHTML="Sorry you don't feel like playing.<br /> The Capital of Missouri is Jefferson City.";
}
else {
    if (!window.confirm("Is that your final answer?")){ return true;

        document.getElementById("firstdiv").innerHTML = "The capital of Missouri is: <bold>" + capital + "</bold>, so says you.";
    }
    else{
        return false;
    }
}
</script> 
4

5 回答 5

76

正确的测试是:

if (capital != null && capital.length < 1) {

这可确保在执行长度检查时始终为非空capital

此外,正如评论所暗示的那样,capitalnull因为您从未初始化它。

于 2013-03-31T16:22:11.327 回答
2

这也有效 - 如果定义了资本,请评估。如果不是,这意味着大写字母未定义或为空(或其他值,在 js 中计算为 false)

if (capital && capital.length < 1) {do your stuff}
于 2019-06-13T19:55:49.277 回答
1

根据您提供的代码,不知道您正在编程的语言。变量capital为空。当您尝试读取属性长度时,系统无法尝试引用空变量。您需要定义capital.

于 2013-03-31T16:21:59.383 回答
1
if (capital.touched && capital != undefined && capital.length < 1 ) { 
//capital does exists
}
于 2015-04-08T13:53:12.780 回答
0

我试过这个:

if(capital !== null){ 
//Capital has something 
}
于 2016-07-06T17:58:42.170 回答