2016-05-14 46 views
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窗口中包含的內容。

回答

0

確切位置在哪裏,你調用初始化,,」功能嗎?你聲明,但我沒有看到在代碼的任何地方你

init(); 

所具有的管線,因此你不事件給它一個機會執行。

+0

它執行我的代碼是除了有關sessionStorage的部分功能。「C」類變量的邏輯所有的作品時,我只是用它作爲一個普通的變量,但我試圖將其轉換會話變量所以一切都能正常工作,init函數和其他所有的東西都由底層的eventlistener處理 – cosmichero2025