Javascript - выберите 3 случайных неповторяющихся деления из списка 5 и отобразите их на странице

0

В настоящее время я загружаю divs в.test1, 2 и 3, как показано ниже:

jQuery(function($){
    $(".test1").load("/?page=owner_testimonials&gridID=1 #showGrid1Content");
    $(".test2").load("/?page=owner_testimonials&gridID=2 #showGrid2Content");
    $(".test3").load("/?page=owner_testimonials&gridID=3 #showGrid3Content");});

Прямо сейчас, я загружаю 3 свидетельства в три слота ".test1", ".test2", ".test3", но вы можете видеть, что отзывы не выбраны случайным образом, их просто вытаскивают по порядку: контент из отзывов 1 (showGrid1Content) загружается из страницы, на которой появляется этот отзыв (/? Page = owner_testimonials & gridID = 1).

Вместо этого я хочу загрузить одно из следующих:

'/? page = owner_testimonials & gridID = 1 # showGrid1Content'

'/? page = owner_testimonials & gridID = 2 # showGrid2Content'

'/? page = owner_testimonials & gridID = 3 # showGrid3Content'

'/? page = owner_testimonials & gridID = 4 # showGrid4Content'

'/? page = owner_testimonials & gridID = 5 # showGrid5Content'

Случайно в.test1,.test2 и.test3, но я не хочу, чтобы любые два из них были одинаковыми (например, я не хочу, чтобы test1 имел gridID4 и.test3, чтобы иметь также gridID4).

Как это сделать, используя jQuery или Javascript?

  • 0
    Поместите их в массив, выберите случайный индекс, удалите этот индекс, повторите.
  • 0
    Поместите ваши значения идентификаторов в массив и используйте один из множества случайных чисел. Тестирование на параллелизм будет немного сложным.
Показать ещё 1 комментарий
Теги:
random

2 ответа

0
Лучший ответ

Создайте массив со всеми вашими свидетельствами, а затем используйте Math.floor(Math.random() * testimonalArray.length).

Это показатель вашего показания.

Удалите его с помощью testimonalArray.splice(index, 1);

Образец:

var testimonalArray = [
   '/?page=owner_testimonials&gridID=1 #showGrid1Content',
   '/?page=owner_testimonials&gridID=2 #showGrid2Content',
   '/?page=owner_testimonials&gridID=3 #showGrid3Content',
   '/?page=owner_testimonials&gridID=4 #showGrid4Content',
   '/?page=owner_testimonials&gridID=5 #showGrid5Content'
];

function randomize() {
    var idx = Math.floor(Math.random()*testimonalArray.length);
    var testimonal = testimonalArray[idx];
    testimonalArray.splice(idx, 1);
    return testimonal;
}

var elements = ['.test1', '.test2', '.test3'];
for(var i = 0; i < 3; i++) {
    $(elements[i]).load(randomize());
}
0

Я не могу проголосовать за hawaii, потому что у меня пока нет репутации 15, но я могу ссылаться на jsfiddle, который делает то же самое.

http://jsfiddle.net/bbankes/eB5T5/

var options = [1, 2, 3, 4, 5];
var numberOfTestimonials = 3;

for (var i=1; i<=numberOfTestimonials; i++) {
    var randomIndex = getRandomIndex(options);

    $('#result').append(options[randomIndex]);
    options.splice(randomIndex, 1);
}

function getRandomIndex(options) {
    return Math.floor(Math.random() * options.length);    
}

Обратите внимание, что два номера не отображаются дважды.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню