-2

マークアップ:

<ul>
<li>Bla</li>
<li>Ble</li>

...


<li>zla</li>
</ul>

それが非常に長いリストであると仮定しましょう。どうすれば x 個のアイテムをランダムに選択できますか?

-編集-

正確な重複ではありません。x 個のアイテムを選択しようとしています。

something like:
var i = 0;
$("li:random").each(function(){
    i++; if(i==50) break;
})
4

5 に答える 5

3

これは、JavaScript のランダム関数を使用してこれを取得する方法の簡単な例です。

$(function() {
    var randomItemsNum = 3;
    var totalItems = $('#mylist > li').length;

    for (var index = 0; index < randomItemsNum; index++) {
        var randomIndex = Math.floor((Math.random() * totalItems) + 1);
        var item = $('#mylist > li:nth-child(' + randomIndex + ')');
        if (item.hasClass('selected')) {
            index--;
            continue;
        }
        else {
            item.addClass('selected');
        }
    }
});

選択した CSS クラスを 3 つのランダムなリスト項目に追加します。ここで動作するデモを確認してください - http://jsfiddle.net/Pharaon/PPW9J/1/

于 2012-06-14T18:28:42.090 に答える
1
function selectRandomFromList($list, num){
    var $children = $list.children(),
        len = $children.length,
        a = [],
        o = {},
        r,
        $items = $([]);

    if (!len) { return $items; }
    if (num >= len) { return $children; }

    // Build an array of unique indices
    while (a.length < num) {
        r = Math.floor(Math.random() * len);
        if (!o.hasOwnProperty(r)) {
            o[r] = 1;
            a.push(r);
        }
    }

    // grab the items
    while (num--) {
        $items = $items.add($children.eq(a.pop()));
    }

    return $items;
}

使用例:

selectRandomFromList($('ul'), 3);

デモ:

http://jsfiddle.net/lbstr/d8JgP/

于 2012-06-14T18:41:17.260 に答える
0
  1. 1からリストの長さまでの乱数(r)を選択します。
  2. el#%r==0であるすべての要素を選択します。

終わり。:)

于 2012-06-14T18:24:57.457 に答える
0

私はあなたがこのようなことをすることで逃げることができると思います:


var list_length = $("ul li").length;
var x; //Assign amount of items
for(var i = 0; i <= x; i++) {
   Math.floor((Math.random()*list_length));
   //Select stuff in here
}
于 2012-06-14T18:25:52.973 に答える
0

このようにしてください: -

randomList = 8;

randomElements = jQuery("li").get().sort(function(){ 
  return Math.round(Math.random())-0.5
}).slice(0,randomList);

$(randomElements).addClass("activeLI");​

CSS

.activeLI {
    color: red;
}​

randomList の数値850または任意の数値に変更します。

ライブデモを参照

jQueryからコピー:この回答のランダムな要素を選択します。

于 2012-06-14T18:26:59.670 に答える