我的脚本在页面加载时无法正确执行

时间:2019-01-30 01:16:18

标签: javascript html

应该在页面加载时调用我的脚本,但是if语句中的某些内容无法正常工作。

我知道脚本被调用是因为onload,警报起作用。我不知道if语句内部发生了什么。

    function nameCheck() {
        alert("test");
            if(localstorage.getItem("name" === "undefined") || localstorage.getItem("name" === null)) {
                var name = prompt("Please enter your name");
                localStorage.setItem("name", name);
                location.reload();
            }
            else {
                document.getElementById("welcome") = "Hello, " + localStorage.getItem("name");
            }
        }
<body onload="nameCheck()">
<h1 id="welcome"></h1>

我希望代码检查您的名字是否在localstorage中,如果是,请获取id为“ welcome”的元素并说“ Hello,[name]”。如果它不在本地存储中,我希望它提示您输入名称,保存并重新加载。

即使页面重新加载,id为“ welcome”的元素也将保持空白。

4 个答案:

答案 0 :(得分:3)

您需要更改元素的innerHTML

document.getElementById("welcome").innerHTML = "Hello, " + localStorage.getItem("name");

答案 1 :(得分:2)

以及@Gendarme上面所说的内容(约innerHTML),您还在以错误的方式检查localStorage值。

例如,您正在检查“ name”变量是否为空,如下所示:

localStorage.getItem("name" === null)

但是应该是这样的:

localStorage.getItem("name") === null

在您的代码中的单词/术语“ localStorage”(在第一个if语句中)也有一个小“ s”,并且应该大写“ S”。

因此完整的代码应如下所示:

 function nameCheck() {
    alert("test");
    if(localStorage.getItem("name") === undefined || localStorage.getItem("name") === null) {
        var name = prompt("Please enter your name");
        localStorage.setItem("name", name);
        location.reload();
    } else {
        document.getElementById("welcome").innerHTML = "Hello, " + localStorage.getItem("name");
    }
  }

答案 2 :(得分:1)

对上面的@Sarah代码也做了一点改进,您不需要分别验证其是否未定义或为null。

您可以使用:

AppBundle\EventListener\UserHandler:
        arguments:
            $stripeKey: "%secret_stripe_key%"
            $session: "@session"
            $logger: "@monolog.logger"
        tags:
            - { name: doctrine.event_listener, event: prePersist }
            - { name: doctrine.event_listener, event: preUpdate }

莎拉(Sarah)关于if(!localStorage.getItem("name")) 的大写字母S的好发现

因此,您的代码应类似于:

localStorage

答案 3 :(得分:0)

代替此if(localstorage.getItem("name" === "undefined") || localstorage.getItem("name" === null)),将代码编写为:

if(localStorage.getItem("name") == "undefined" || localStorage.getItem("name") == null)

由于您的代码格式首先是错误的,因此预期无法正常工作。要从localStorage获取密钥对值,您应该将其写为localStorage.getItem(key)。现在,localStorage仅支持将字符串用作值,因此在使用比较符号时要小心,因为您知道localStorage.getItem(name) === null将不起作用,因此请使用{{ 1}}。