将随机结果更改为序列

时间:2015-01-12 14:22:37

标签: javascript jquery

如何将此随机结果更改为从较低数字开始的序列?我是JS的新手,并试图在没有解决方案的情况下进行修改。我希望任何人都可以提供帮助。

function randomFeed() {
    var $el = $("#randomFeed");

 var random = new Array('news1','news2','news3','news4','news5','news6');

    var randomIndex = Math.floor(Math.random() * 4);
    var newElement = random[randomIndex];

        $el.prepend("<tr><td>" + newElement + "</td></tr>").find("tr").first().hide();
        $el.find("tr").first().fadeIn();
        if ($el.find("tbody tr").length > 20) {
            $el.find("tbody tr").last().fadeOut(400, function() {
                $(this).remove();
            });
        }

    slimScrollUpdate($el.parents(".scrollable"));

    setTimeout(function() {
        randomFeed();
    }, 3000);
} 

2 个答案:

答案 0 :(得分:0)

试试这个:

news = new Array('news1','news2','news3','news4','news5','news6')

// option 1
news.sort(function() {
      return .5 - Math.random();
    });
//news = news1,news2,news3,news6,news4,news5

//option 2
len = news.length,
randomNumber = Math.floor((Math.random() * len) + 0);
// randomNumber = 3

part = news.slice(randomNumber, len)
// part = arrnews6,news4,news5

请更准确地说明您对目标的期望是什么!

答案 1 :(得分:0)

所以你需要连续的新闻幻灯片而不是随机的?试试这个(注意全局feedIndex变量)

var feedIndex = 0;

function randomFeed() {
    var $el = $("#randomFeed"),
        news = new Array('news1','news2','news3','news4','news5','news6'),
        newElement = news[feedIndex++ % news.length];

    //console.log(newElement);

    $el.prepend("<tr><td>" + newElement + "</td></tr>").find("tr").first().hide();
    $el.find("tr").first().fadeIn();
    if ($el.find("tbody tr").length > 20) {
        $el.find("tbody tr").last().fadeOut(400, function() {
            $(this).remove();
        });
    }

    slimScrollUpdate($el.parents(".scrollable"));

    setTimeout(function() {
        randomFeed();
    }, 3000);
}
顺便说一下,这个代码处于状态非常糟糕。它每次都会更改DOM以显示新的Feed元素。最好使用display:none渲染所有元素,并仅切换实际元素的可见性。这是常见的模式