簡體   English   中英

如何使用jQuery顯示列表的3個隨機項?

[英]How to show 3 random item of list using jquery?

我有一個很大的項目列表<li>和一個“隨機播放”列表的按鈕,我要實現的是,頁面加載時僅顯示3個RANDOM列表項目,然后單擊按鈕,隨機播放列表,隱藏當前的3個列表項,並顯示OTHER RANDOM個列表項。

到現在為止我所做的就是這個,但是它並沒有真正完成我想要達到的所有目的,我只顯示了3個項目,但是它們總是在相同的3個列表項目之間隨機分配...

$('.fr_revs > li').hide().filter(':lt(3)').show();

var ul = document.querySelector('.fr_revs');
for (var i = ul.children.length; i >= 0; i--) {
    ul.appendChild(ul.children[Math.random() * i | 0]);
}

有人可以幫我嗎。 謝謝

試試這個

var ul = $('ul'),
    lis = ul.find('li').detach(),
    button = $('#shuffle'),
    used = [];

function showRandom() {
    var new_lis = [];
    while (true) {
      var li = lis[Math.floor(Math.random() * lis.length)];
      if (used.indexOf(li) === -1 && new_lis.indexOf(li) === -1) new_lis.push(li);
      if (new_lis.length >= 3) break;
    }
    used = new_lis;
    ul.html(new_lis);
}

button.click(showRandom);
showRandom();

您需要具有六個或更多的<li>元素,否則它將是一個無限的while (true)循環。

試試這個簡單的答案,這很容易,這是工作示例

 <html> <head></head> <title></title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <style type="text/css"> </style> <body> <input type="button" value="click to shuffle" id="shuffle"> <ul class="mylist"> <li id="id1">one</li> <li id="id2">two</li> <li id="id3">three</li> <li id="id4">four</li> <li id="id5">five</li> <li id="id6">six</li> <li id="id7">seven</li> <li id="id8">eight</li> <li id="id9">nine</li> <li id="id10">ten</li> <li id="id11">eleven</li> <li id="id12">twelve</li> </ul> </body> <script type="text/javascript"> $(document).ready(function(){ $("ul.mylist li").slice(3).hide(); var theCount = 3; $("#shuffle").click(function(){ $("ul.mylist li").hide(); var theLength = $("ul.mylist li").length; if(theCount == theLength) { theCount = 3; } else { theCount = theCount + 3; } $("ul.mylist li").slice(theCount-3,theCount).show(); }); }); </script> </html> 

注意:在這里,length(ul內的元素數)應該是一個可以從3開始的數,因為您希望每次顯示3

首先隱藏所有項目。 然后生成3個隨機數,並使用.eq()選擇具有索引的項目並顯示所選項目。

 $(".fr_revs > li").hide(); randomItem(); $("button").click(function(){ var lastItems = $(".fr_revs > li:visible"); randomItem(); lastItems.hide(); }); function randomItem(){ for (var i = 0; i < 3; i++){ var length = $(".fr_revs > li:not(:visible)").length; var random = Math.floor(Math.random() * length); $(".fr_revs > li:not(:visible)").eq(random).show(); } } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button>Get new</button> <ul class="fr_revs"> <li>A</li> <li>B</li> <li>C</li> <li>D</li> <li>E</li> <li>F</li> <li>G</li> <li>H</li> <li>I</li> <li>J</li> <li>K</li> <li>L</li> <li>M</li> <li>N</li> <li>O</li> </ul> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM