Вопрос

Мне нужно иметь возможность вращать содержимое внутри элемента-заполнителя, основываясь на процентах, подобных этому. Поворот будет происходить при загрузке страницы. Поэтому каждый раз, когда пользователь перезагружает страницу, у него есть шансы увидеть контент 1, 2 или 3 в заполнителе контента:

Содержание 1 = показывать 50% времени
Содержание 2 = показать 25% времени
Содержание 3 = показывать 25% времени

Я предпочитаю Javascript, но если есть более простой способ сделать это в ASP.NET на внешнем шаблоне, а не на коде, это также приемлемо. Если у вас есть решение или вы можете указать мне на существующий сценарий, я был бы признателен. Спасибо!

Это было полезно?

Решение

На самом деле не нужно ничего умножать / floor / ceil: функция Math.random () дает значение, которое больше или равно 0 и меньше 1.

Следующий код будет немного проще поддерживать, если вы измените количество опций или процент вероятности.

var contentId, random = Math.random();

if (random < 0.5) {
  // option 1: chance 0.0–0.499...
  contentId = 0;
} else (random < 0.75) {
  // option 2: chance 0.50—0.7499...
  contentId = 1;
} else {
  // option 3: chance 0.75–0.99...
  contentId = 2;
}

loadContent(contentId);

Другие советы

Для случайной части скрипта вам просто нужно поиграть с Math.random Что-то уродливое и закодированное будет выглядеть так:

var contentToShow = -1;
var NB_MAX = 4;
var myRand = Math.floor(Math.random()*NB_MAX);
if(myRand<1) contentToShow = 1;
else if (myRand<2) contentToShow = 2;
else contentToShow = 3;

Тогда вам просто нужно загрузить контент с помощью ajax.

Пример в jQuery может выглядеть следующим образом:

var myPlaceHolder = $("#myPlaceHolder")
$.myPlaceHolder.load("/mycontents/mycontent_" + contentToShow + ".asp");

Но использование ajax-запроса при загрузке страницы - не самый лучший способ. (2 запроса к серверу вместо 1, если случайный контент обрабатывается сервером)

Вот быстрый взлом, возможно, есть лучший способ.

var randomnumber=Math.floor(Math.random()*4)
if((num==0) || (num==1)) {
//show hidden div or document.write (50% probability)
} else if (num==2) {
//show hidden div or document.write (25% probability)
} else {
//show hidden div or document.write (25% probability)
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top