Я хотел бы иметь кнопку, которая выбирает 5 элементов списка в случайном порядке из несортированного HTML-списка в jQuery. Я также хочу убедиться, что функция сначала проверит, что если есть 5 или менее элементов списка, она просто выберет все доступные элементы списка. Кроме того, я хочу убедиться, что случайный 5 не имеет дубликатов в своем массиве. Кроме того, предположим, что есть 28 элементов списка, я бы хотел, чтобы он выбирал 5 в случайном порядке, которые еще не были выбраны, так как вы можете нажать кнопку несколько раз. Поэтому в основном я хотел бы выбрать 5 в случайном порядке, пока не будет выбран весь список. Вот что я до сих пор.Выберите 5 случайных элементов списка как массив в jQuery
<ul id="masterlist">
<li><a href="http://www.example1.com" target="_blank">Example 1</a></li>
<li><a href="http://www.example2.com" target="_blank">Example 2</a></li>
<li><a href="http://www.example3.com" target="_blank">Example 3</a></li>
<li><a href="http://www.example4.com" target="_blank">Example 4</a></li>
<li><a href="http://www.example5.com" target="_blank">Example 5</a></li>
<li><a href="http://www.example6.com" target="_blank">Example 6</a></li>
<li><a href="http://www.example7.com" target="_blank">Example 7</a></li>
<li><a href="http://www.example8.com" target="_blank">Example 8</a></li>
<li><a href="http://www.example9.com" target="_blank">Example 9</a></li>
</ul>
<button id="openfiverandom">Open 5 Random</button>
<script type="text/javascript">
$(function() {
$('#openfiverandom').bind('click', function(event) {
var links = $('#masterlist li a');
var len = links.length;
if (len <= 5) {
$('#masterlist li a').each(function() { this.click(); })
}
else {
while(links.length > 5) {
links.eq(parseInt(len * Math.random())).hide();
}
links.each(function() { this.click(); })
}
});
});
</script>
Это не работает, и он не проверяет наличие дубликатов. Я надеюсь найти лучшее решение здесь в stackoverflow. Также имейте в виду, что ссылки имеют target = "_ blank", что означает, что они все равно будут открыты, это не остановится на первом, так как он не пересылает текущую страницу. Я также думал, что было бы проще просто рандомизировать массив основных списков, а затем разрезать первые пять. Не знаю, как это сделать.
следует помнить, что запуск нажатия не открывается. – charlietfl
Это действительно, @charlietfl. Он работает в другой функции. – Armin
не перекрестный браузер он не будет. Функция безопасности, чтобы у людей не было всякого рода открытий случайным образом (по крайней мере, это не сработало) – charlietfl