2011-09-25 40 views
0

考慮一個縮略圖列表,用戶從中點擊一個來更改背景圖片。以下腳本讓用戶選擇一個背景圖像並應用它。Jquery - 加載cookie數據

$(function() { 
     $('.themes li a img').click(function() { 
      var image = 'imgs/someimage.jpg'; 
      //Set cookie 
      function setCookie(){ 
       $.cookie("html_img", image, {expires:7}); 
       var a = $.cookie('html_img');//get cookie value 
       return a; 
      } 
     }); 
}); 

其他腳本調用loadCookie.js負載包含選定的背景餅乾當用戶訪問另一個頁面:

$(function() { 
     var startImage=''; 
     startImage = setCookie(); 
     $(document).ready(function(){ 
      $('html').css("background", startImage); 
     }); 
    }); 

IE8說「對象不支持此操作,3號線」; Jquery cookie插件已安裝。我知道我找不到一些小錯誤。任何幫助使腳本工作非常感謝。

回答

2

不上你想要做什麼100%,但我認爲這是你後(假設你使用jquery.cookie.js):

$(function() { 

    if($.cookie("html_img")) { 
     $('html').css("background", $.cookie("html_img")); 
    } 

    $('.themes li a img').click(function() { 

     var image = 'imgs/someimage.jpg'; 
     // var image = $(this).attr('src'); 

     $('html').css("background", image); 

     $.cookie("html_img", image, {expires:7}); 

     return false; 

    }); 

}); 
2

因爲這是你的第三個關於這個代碼的問題(之前的代碼是herehere),你似乎對這段代碼和使用堆棧溢出的正確方式感到困惑。

以下是Cookie的工作原理。在一頁上,您設置了一個cookie。在後續頁面上,您可以閱讀該cookie並使用它的值。

在此代碼示例中,您將第一個代碼塊中的cookie設置爲背景圖像。到現在爲止還挺好。

在第二塊代碼中,您再次調用setCookie。如果你想從cookie中獲取背景圖片,那麼你需要獲取cookie值,而不是設置它。您的代碼也許應該是這樣的:

$(document).ready(function() { 
    // initialize background from cookie 
    var startImage = $.cookie("html_img"); // get cookie value 
    if (startImage) { 
     $(document.body).css("background-image", startImage); 
    } 

    // install click handler to change background 
    $('.themes li a img').click(function() { 
     var newBackground = 'imgs/someimage.jpg'; 
     $(document.body).css("background-image", newBackground); 
     $.cookie("html_img", newBackground, {expires:7}); // save in cookie 
    }); 
}); 

您可能還需要知道,如果你不指定像path: '/' cookie的路徑選擇,cookie只能被讀取當前路徑上,而不是在別處在您的網站上。該jQuery附加cookie文件的文檔是here

至於使用stackoverflow,你應該問一個關於某段代碼的明確問題,當被調查者感到困惑或提供的答案不是你想要問的時候,你應該適當地澄清你的問題,直到你得到一個合適的回答。記住,當人們向錯誤的方向提供答案時,很可能是因爲他們不明白你問的是什麼,而不是因爲他們不知道如何回答。你不應該在一個新的問題中再次發表一個相同問題的小變化。