2009-06-17 6 views
2

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

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

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

+0

Я уже собирался сказать, что вы не можете вращать вещи в HTML, пока я не понял, что вы имели в виду это в другом контексте. – SpliFF

ответ

10

Нет необходимости многократно увеличивать/перекрывать/перекрывать все: функция 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); 
+0

Спасибо Дамир, я закончил использовать этот, и он работает точно так, как я хотел, чтобы он работал. Кроме того, он сохраняет несколько строк кода. – Dan

0

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

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) 
} 
+0

Если вы используете пол, значения будут находиться в диапазоне от 0 до 3, а не от 1 до 4 –

+0

Вы правы, спасибо. –

0

Для случайной части сценария, вы просто должны играть с 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; 

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

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

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

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

+0

Это правильная реализация, но я бы согласился с тем, что ее нужно обрабатывать на стороне сервера, чтобы получить лучшие результаты. (Приведение содержимого Ajax при загрузке, вероятно, будет неудобно) –

 Смежные вопросы

  • Нет связанных вопросов^_^