我正在与localstorage第一次合作,并遇到了一些范围问题。Javascript本地存储范围
当我尝试console.log(test)
时,我在我的第二个if
声明中得到undefined
。我究竟做错了什么?
我的代码如下;
$("document").ready(function(){
var is_stopped = false;
source.onmessage = function(event) {
if (is_stopped) {
localStorage.setItem('offline', event.data);
var test = localStorage.getItem('offline');
console.log(test); // works here
}
if (!is_stopped) {
document.getElementById("result").innerHTML += "Data:" + event.data + "<br>";
console.log(test); // undefined
}
$("#start").click(function(){
is_stopped = false;
});
$("#stop").click(function(){
is_stopped = true;
});
});
<div id="result"></div>
<button id="stop"> stop</button>
<button id="start"> start</button>
当然这是undefined值进行分配。因为你没有定义它。你不能同时进入'if(is_stopped)'和'if(!is_stopped)'。 – dfsq
因为它只在'if(is_stopped)'块中定义,并且在其他任何地方没有值,尤其是在'if(!is_stopped)'块中。 –
你的点击处理程序在哪里?您点击时正在设置is_stopped,但您并未要求进一步的操作。您需要一个处理程序来告诉浏览器您在设置状态后实际上想要执行的操作。 – Korgrue