0
我有一個非常長的文件路徑名和一個閃存畫廊鏈接的列表。這個數組與後面,隨機和下一個按鈕交互。我想將變量「C」設置爲可變的sessionStorage所以當頁面refreshs(我需要它的理由這樣做)的值保存。我已經測試了這些變量,沒有sessionStorage,一切都很正常。需要注意的一點是,「隨機」按鈕可以工作,而後退和下一個按鈕不起作用。不能sessionStorage的一個設置爲變量在Javascript
我試圖把所有3條,但我只表明我與「後退」功能更改,因此每個人都可以得到此之前,什麼工作的透視。
var c;
sessionStorage.setItem('order', c);
var flashcon, test, temp;
var backbutt, randbutt, nextbutt;
backbutt = document.getElementById('back');
randbutt = document.getElementById('rand');
nextbutt = document.getElementById('next');
flashcon = document.getElementById('flashcon');
function init() {
if (sessionStorage.getItem('ref') == 1) {
console.log('Value: ref==1(back)');
back();
} else if (sessionStorage.getItem('ref') == 2) {
console.log('Value: ref==2(rand)');
rand();
} else if (sessionStorage.getItem('ref') == 3) {
console.log('Value: ref==3(next)');
next();
} else {
console.log('State: First session or refresh session');
}
// Scripts for the buttons
backbutt.onclick = function() {
console.log('Event: backbutton.onclick');
sessionStorage.setItem('ref', 1);
location.reload();
};
randbutt.onclick = function() {
console.log('Event: randbutton.onclick');
sessionStorage.setItem('ref', 2);
location.reload();
};
nextbutt.onclick = function() {
console.log('Event: nextbutton.onclick');
sessionStorage.setItem('ref', 3);
location.reload();
};
}
// Changes the name at the top of the screen
function displayFiles() {
console.log('Called: displayFiles()');
test = paths[c].substring(paths[c].lastIndexOf('.') + 1, paths[c].length);
document.getElementById('title').innerHTML = displaytext[c];
flashcon.innerHTML =
'<object id="flashcontent" data="' + paths[c] + '">' +
'<param name="movie" type="application/x-shockwave-flash">' +
'</object>';
}
// What switches the flashs
function back() {
console.log('Called: back()');
sessionStorage.removeItem('ref');
if (sessionStorage.getItem('order') == 0) {
console.log('Did the whole if thing');
c = paths.length;
c = sessionStorage.getItem('order');
}
console.log('Went past the if');
c--;
c = sessionStorage.getItem('order');
displayFiles();
download();
console.log('Value of "c": ' + c);
}
function next() {
console.log('Called: next()');
sessionStorage.removeItem('ref');
if (c == paths.length - 1) {
c = -1;
}
c++;
displayFiles();
download();
console.log('Value of "c": ' + c);
}
function rand() {
console.log('Called: rand()');
sessionStorage.removeItem('ref');
temp = c;
while (c == temp) {
c = Math.floor(Math.random() * paths.length);
}
displayFiles();
download();
console.log('Value of "c": ' + c);
}
(我的代碼一些解釋是很有意義)
當用戶進入頁面,第一次它會去初始化函數,這將轉到「其他」聲明這語句不會執行任何操作,並等待用戶單擊一個指定刷新頁面的變量的按鈕。頁面刷新後,它會再次運行init將使用「如果」 statments之一,因爲變量已設置。這些if語句調用腳本來更改Flash窗口中包含的內容。
它執行我的代碼是除了有關sessionStorage的部分功能。「C」類變量的邏輯所有的作品時,我只是用它作爲一個普通的變量,但我試圖將其轉換會話變量所以一切都能正常工作,init函數和其他所有的東西都由底層的eventlistener處理 – cosmichero2025