我是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>
答案 0 :(得分:0)
答案 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>