В настоящее время я загружаю 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?
Создайте массив со всеми вашими свидетельствами, а затем используйте 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());
}
Я не могу проголосовать за 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);
}
Обратите внимание, что два номера не отображаются дважды.