Pergunta

Eu preciso ser capaz de conteúdo rotação dentro de uma div espaço reservado com base em percentual como esta. A rotação ocorrerá no carregamento da página. Assim, cada vez que um usuário recarrega a página ele tem essas chances de ver o conteúdo de 1, 2 ou 3 no marcador de posição de conteúdo:

Conteúdo 1 = mostrar 50% do tempo
Conteúdo 2 = mostrar 25% do tempo
Conteúdo 3 = mostrar 25% do tempo

Eu prefiro Javascript mas se existe uma maneira mais fácil de fazê-lo em ASP.NET no modelo de front-end não codebehind, que também é aceitável. Se você tem uma solução ou pode apontar-me a um script existente eu apreciaria. Obrigado!

Foi útil?

Solução

Não há realmente nenhuma necessidade de multiplicar / chão / nada ceil:. A função Math.random() dá valor que é maior que ou igual a 0 e menos de 1

O código a seguir seria um pouco mais fácil de manter, se você alterar o número de opções ou a percentagem acaso.

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);

Outras dicas

Para a parte aleatória do script, você só tem que jogar com Math.random Algo feio e codificado ficaria assim:

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;

Em seguida, você só tem que carregar o conteúdo com o Ajax.

Um exemple em jQuery poderia ser semelhante a:

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

Mas usando ajax solicitação em um carregamento da página não é o caminho a percorrer imo. (2 solicitação do servidor, em vez de 1 se o conteúdo aleatório é tratado pelo servidor)

Aqui está um corte rápido, provavelmente há uma maneira melhor.

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)
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top