2014-03-19 61 views
0

我看到這個代碼在互聯網上:如何加載上裝載的不同DIV(重複順序)

$(function(){ 
    $(".various"+(new Date().getTime() % 3)).css("display", "block"); 
}); 

它改變了DIV這是對以隨機順序重裝可見。我只有一個問題,在我的情況下,這看起來很不專業。所以我的問題是我如何使這不是隨機的,但它首先顯示了div1,第二次重新加載div2,第三次重新加載div3,並返回到div1,我是一個漂亮的JavaScript在JavaScript中,所以一個新的和平的JavaScript也很好

感謝,清酒

+0

如果每次重新加載整個頁面,您將如何跟蹤顯示哪個div? –

+0

我想你想爲你的div創建一種幻燈片,對不對?順便說一句,你發佈的代碼似乎對我來說太過於jQuery。請添加您的html代碼。 – Allende

+0

是的,我想要一個幻燈片,但它只需要改變頁面重新加載的重複順序,這是jQuery,但JavaScript也是oke – user3438393

回答

1

您可以使用Cookies來保存當前格數是可見的。

閱讀本關於如何設置和檢索cookie:JavaScript Cookies

後你得到了當前格數(例如名稱爲divNum,運行此功能

function showDiv() { 
     $("#div" + divNum).show(); 

     divNum++; 
     //Remember to set the divNum back to the cookies for later use 
} 

我不是一個親所以也許有一個更好的方式來處理這個.. CMIIW〜

+0

或使用localStorage對象:http://diveintohtml5.info/storage.html –

4

如果你只想改變div加載頁面時(這意味着沒有爲你的div運行幻燈片,改變你的html到喜德/告訴他們)

我能想到3個技術途徑:

1)您可以嘗試爲以前的答案(來自@Charlie)使用Cookie存儲當前的股利。

這在舊的瀏覽器工作(和jQuery將採取crossbrowsing照顧)

UPDATE一個例子使用的好處使用jQuery(jquery.cookie插件)

後餅乾您的jQuery添加jquery.cookie插件

<script src="jquery-1.9.1.js"> </script> 
<script src="jquery.cookie.js"> </script> 

假設我們/你有這樣的HTML的div:

//Notice the divs are using a prefixed id with numeric ending 
//(I think it's the best option) 

<div id="mdiv1"> 
    <ul><li><a href="#" id="mlink"> hello 1 </a></li></ul> 
</div> 


<div id="mdiv2"> 
    <ul><li><a href="#" id="mlink"> hello 2</a></li></ul> 
</div> 


<div id="mdiv3"> 
    <ul><li><a href="#" id="mlink"> hello 3</a></li></ul> 
</div> 

這jQuery代碼:

<script> 
$(document).ready(function(){ 

    //hide all divs just for the purpose of this example, 
    //you should have the divs hidden with your css 

    $('#mdiv1').hide(); 
    $('#mdiv2').hide(); 
    $('#mdiv3').hide(); 
    //check if the cookie is already setted 
    if ($.cookie("currentDiv")===undefined){ 
      $.cookie("currentDiv",1); 
    }else{ //else..well 
      //get and increment value, let's suppse we have just 3 divs  

      var numValue = parseInt($.cookie("currentDiv")); 
      numValue = numValue + 1; 
      if (numValue>3){ 
      //restart to 1 
       $.cookie("currentDiv",1); 
      } 
      else{ //no issues, assign the incremented value 
       $.cookie("currentDiv",numValue.toString()); 
      } 

      //show the div 
      $('#mdiv'+$.cookie("currentDiv")).show(); 
    } 
}); 
</script> 

2)由於@Ra Mon評論說,localStorage是另一個不錯的選擇(現代瀏覽器)來跟蹤最後加載的div。

我覺得它比餅乾更優雅,但它不工作oldbrowsers的缺點,當然你也可以使用Modernizer至特徵檢測和應用一些polyfill(使用cookies)得到crossbrowsing。

3)第三種方法(只要你並不需要「動態」 HTML),我想使用服務器端的會話(PHP/CSS)保持最後一個div加載的軌道提/渲染並渲染下一個。即使你可以從服務器端處理cookie,如果不想使用基於內存的會話,缺點將會失去緩存。

嘗試一些代碼並返回更新您的問題與更多和/或具體細節,以便有人能夠幫助你,無論你選擇的方法。

@RyanS我的意思是:

關於「動態」如果你要改變,只有當頁面加載股利,那麼就沒有必要使用客戶方腳本的,這可以從服務器實現側。

關於「緩存」,如果您要更改服務器端的頁面/ html,則Web服務器必須將Web頁面再次「提供」到WebBrowser/Client,因爲它從上次更改查看(丟失緩存,添加一些負載流量,帶寬使用)< < < <更好地說,如果瀏覽器確定頁面自上次查看後(並且將會)將發生變化,將再次請求html /頁面。

+0

您可以擴展您關於丟失動態html和第三種方法的緩存嗎? – RyanS

+0

嗨@RyanS擴展/更新,這是關於丟失緩存和需要或不需要「動態」的HTML。 – Allende

+0

好吧,我認爲你的意思是緩存圖像,這將不受影響。謝謝+1 – RyanS