在Javascript / jQuery的表格中随机播放

时间:2014-05-06 17:10:22

标签: javascript jquery shuffle

我真的很挣扎,所以也许你们中的一些人有一些漂亮的提示?

我想做什么 我想创建一个包含两列的表(" name"和" rating")。我有5排。

  • 这些行中的2行应具有随机的"等级"在6-10之间
  • 其他2行应该具有随机"等级" 1-5之间
  • 1行(最后一行)的随机评分应在7-10之间。

在此之前没有问题:到目前为止这是我的jsFiddle:http://jsfiddle.net/HT89v/2/

BUT: 我想要洗牌"收视率"在前4行中,前两行总是不具有很高的等级"并且第3和第4行总是没有非常低的等级"。我想随机洗牌。

第5行不应受到影响。

我试图在jsfiddle中实现.shuffle插件,但我不知道我做错了什么。

function noNorm(){  
    document.getElementById("rating4").innerHTML = [Math.floor(Math.random()*5) + 6];

    for (var i = 0; i <= 1; i++){
        document.getElementById("rating"+i).innerHTML = [Math.floor(Math.random()*5) + 6];
    };

    for (var i = 2; i <= 3; i++){
        document.getElementById("rating"+i).innerHTML = [Math.floor(Math.random()*5) + 1];
    };
};

noNorm();

jQuery(function($){
    $('#rating0', '#rating1', '#rating2', '#rating3').shuffle();
});


(function($){

    $.fn.shuffle = function() {
        return this.each(function(){
            var items = $(this).children().clone(true);
            return (items.length) ? $(this).html($.shuffle(items)) : this;
        });
    }

    $.shuffle = function(arr) {
         for(var j, x, i = arr.length; i; j = parseInt(Math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x);
         return arr;
    }

})(jQuery);

非常感谢你!

1 个答案:

答案 0 :(得分:1)

有许多使用javascript对数组进行混洗的解决方案。 如果我理解你的问题是正确的,那应该可以解决问题:http://jsfiddle.net/HT89v/6/

在给ratings[]赋值之前,我将整个ratings[4]数组洗牌,以便第5行不受影响。