Javascript没有声明变量

时间:2013-11-26 12:04:33

标签: javascript document.write

我是JavaScript新手我有这个脚本,我想在if上声明一个变量但是在document.write上,什么都不做我的错误?

<head>
    <script>
        (function () {
            setInterval(function () {
                var NetworkStatus = document.getElementById("status"),
                    isOnline = navigator.onLine;

                if (isOnline) {
                    NetworkStatus.innerHTML = "Online";
                    NetworkStatus.className = "online";
                    var person="John Doe";
                } else {
                    NetworkStatus.innerHTML = "Offline";
                    NetworkStatus.className = "offline";
                    var person="Santa Claus";
                }
            }, 100);
        })();
    </script>
</head>
<body>
    <h1 id="status"></h1>
    <script>
        document.write(person + "<br>");
    </script>
</body>

4 个答案:

答案 0 :(得分:0)

你在IIFE。它创造了自己的范围

这就是它停留的地方

这样做:

window.person="Santa Claus";

而不是你在做什么。

答案 1 :(得分:0)

var将变量的范围设置为在其中声明的函数。您正试图从该函数外部document.write,因此它超出范围且无法访问。

使用window.person代替var person

答案 2 :(得分:0)

该函数在100ms后执行,这意味着当页面加载时,person变量没有值。

答案 3 :(得分:0)

这完全是错的,为什么要使用IIFE和超时,你只需要在DOM的末尾添加脚本中的脚本。

另外,你要设置元素的innerHTML,并使用document.write来覆盖文档吗?

<head>
    <title>I messed up</title>
</head>
<body>
     <h1 id="status"></h1>

    <script>
        var NetworkStatus = document.getElementById("status"),
            isOnline = navigator.onLine;

            if (isOnline) {
                var person = "John Doe";
                NetworkStatus.innerHTML = "Online " + person;
                NetworkStatus.className = "online";
            } else {
                var person = "Santa Claus";
                NetworkStatus.innerHTML = "Offline " + person;
                NetworkStatus.className = "offline";

            }
    </script>
</body>