如何使用jquery显示3个随机列表项
How to show 3 random item of list using jquery?
我有一个大列表<li>
的项目和一个按钮来"洗牌"列表,我想要实现的是,当页面加载时只显示3个随机列表项目,然后点击按钮,洗牌列表,隐藏当前3个列表项目并显示其他随机列表项目。
我到现在为止所做的就是这样,但它并没有真正做到我想要实现的一切,我只显示了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)
循环
首先隐藏所有项。然后生成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>
试试这个简单的答案,它很简单,下面是工作演示
<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>
注意:在这里,长度(ul中元素的数量)应该是一个可以除以3的数字,因为你想每次显示3
相关文章:
- 如何在 Javascript/jQuery 中获取一些随机下拉列表的选定值
- 如何随机显示列表项的顺序
- 在列表中至少使用两次随机生成的nr
- 如何使用CSS在列中显示随机生成的列表
- 如何在Javascript中设置随机生成的项目列表的样式
- 我如何得到一个有序的列表,随机吐出列表中的一些
- 如何提交从列表中随机选择的非重复变量
- 如何在一个随机化的有序列表中随机化多个无序列表
- 如何从列表中突出显示一个随机单词
- 如何使用JavaScript随机化有序列表
- 如何使用JavaScript在HTML5网站上随机选择歌曲播放(从列表中)
- 从1-9之间的随机数字列表中选出3个相同的数字
- 从列表中选择随机段落
- 从数组列表中随机选择一个段落 Javascript
- 随机音频列表在调用时不播放
- 给定一个很长的列表,我如何随机选择 X 元素
- 段落形式的随机列表
- 自调整随机列表
- 如何实现一个排序,但随机列表与javascript/jquery
- 如何使用jquery显示3个随机列表项