我一直在嘗試在我的html頁面上獲取樣式更改以使用此API進行存儲。我很新,所以我不太確定問題是什麼。當我選擇菜單項時,樣式會改變,但如果我刷新或關閉窗口,它們不會保存。Web存儲API和Javascript - 未定義的錯誤
編輯:我已經搬離試圖讓他們節省,而是有使用的最後一個樣式使用本地存儲,然後使用一個開關來運行上次保存的樣式功能存儲起來。但是,當我嘗試獲取上次保存的值時出現未定義的錯誤。
這裏的JS:
//Style 1
function style1(){
var vP = document.getElementById('video_container');
var bG = document.getElementsByTagName('body');
var sidebar = document.getElementById('sidebar');
var banner = document.getElementById('top_header');
var body = document.getElementById('body_div');
vP.style.backgroundColor = ('black');
bG[0].style.background = "url('images/bg/bg1.jpg') no-repeat center center fixed";
sidebar.style.display = ('block');
banner.style.display = ('block');
body.style.marginTop = ('190px');
var selectedStyle = "style";
var value = 's1';
newItem(selectedStyle,value);
}
//Style 2
function style2(){
var vP = document.getElementById('video_container');
var bG = document.getElementsByTagName('body');
var sidebar = document.getElementById('sidebar');
var banner = document.getElementById('top_header');
var body = document.getElementById('body_div');
vP.style.backgroundColor = get_random_color();
bG[0].style.background = "url('images/bg/bg"+randNum()+".jpg') no-repeat center center fixed";
sidebar.style.display = ('block');
banner.style.display = ('block');
body.style.marginTop = ('190px');
var selectedStyle = 'style';
var value = 's2';
newItem(selectedStyle,value);
}
//Style 3
function style3(){
var vP = document.getElementById('video_container');
var bG = document.getElementsByTagName('body');
var sidebar = document.getElementById('sidebar');
var banner = document.getElementById('top_header');
var body = document.getElementById('body_div');
vP.style.backgroundColor = get_random_color();
bG[0].style.background = "url('images/bg/bg"+randNum()+".jpg') no-repeat center center fixed";
sidebar.style.display = ('none');
banner.style.display = ('none');
body.style.marginTop = ('80px');
var selectedStyle = 'style';
var value = 's3';
newItem(selectedStyle,value);
}
//-------------Web Storage API stuff-------------//
window.addEventListener('load',initiate);
function initiate(){
window.addEventListener('storage', storagechange);
show();
}
function newItem(id,style){
localStorage.setItem(id,style);
}
function show(){
var x = localStorage.key(0);
var y = localStorage.getItem(x);
var z=2;
alert(y); //used to test what value i would get, it says undefined
switch (y) {
case 's3':
style3();
break;
case 's2':
style2();
break;
case 's1':
default:
style1();
break;
}
}
HTML:
<div id="sideMenu" >
<ul class="bmenu">
<li id="f1" onclick="style1()">Style 1</li> <!--turn sidebar on/off-->
<li id='f2' onclick="style2()">Style 2</li> <!--randomize vidcontain border-->
<li id='f3' onclick="style3()">Style 3</li>
</ul>
</div>
究竟你認爲'localStorage.getItem(0);'呢? – 2013-03-15 09:13:28
我試圖獲得本地存儲的第一個值(函數)? – Batman 2013-03-15 18:46:45
嗯,首先你只能在localStorage中存儲字符串,其次你沒有把它分配給任何東西,一旦你得到它。 – 2013-03-15 18:50:18