开发者问题收集

无法读取 null 的属性“length”(javascript)

2013-03-31
197704

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

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> 
3个回答

正确的测试是:

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

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

此外,正如注释所暗示的, capitalnull ,因为您从未初始化它。

Hunter McMillen
2013-03-31

这也有效 - 如果 capital 已定义,则进行评估。如果没有,则意味着 capital 未定义或为 null(或其他值,在 js 中评估为 false)

if (capital && capital.length < 1) {do your stuff}
Kamil Naja
2019-06-13

从您提供的代码来看,不知道您编程的语言。变量 capital 为空。当您尝试读取属性长度时,系统无法读取,因为它试图遵循空变量。您需要定义 capital

secretformula
2013-03-31