문제

이와 같은 비율에 따라 자리 표시 자 DIV 내에서 콘텐츠를 회전 할 수 있어야합니다. 회전은 페이지로드에서 발생합니다. 따라서 사용자가 페이지를 다시로드 할 때마다 콘텐츠 자리 표시 자에서 콘텐츠 1, 2 또는 3을 볼 가능성이 있습니다.

내용 1 = 시간의 50%를 표시합니다
내용 2 = 시간의 25%를 보여줍니다
내용 3 = 시간의 25%를 보여줍니다

나는 JavaScript를 선호하지만 CodeBehind가 아닌 프론트 엔드 템플릿의 ASP.NET에 더 쉬운 방법이 있다면 허용됩니다. 해결책이 있거나 기존 스크립트를 가리킬 수 있다면 감사하겠습니다. 감사!

도움이 되었습니까?

해결책

실제로 곱을 곱할 필요가 없습니다. Math.random() 함수는 0보다 크거나 같은 값을 제공합니다.

옵션 수 또는 기회 백분율을 변경하면 다음 코드를 유지하기가 약간 쉽습니다.

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

다른 팁

스크립트의 임의의 부분을 위해서는 수학을 가지고 놀아야합니다. 추악하고 하드 코드 된 무언가가 다음과 같이 보일 것입니다.

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 요청을 사용하는 것은 IMO로가는 방법이 아닙니다. (임의의 컨텐츠를 서버에서 처리하는 경우 1 대신 2 서버 요청)

여기에 빠른 해킹이 있습니다. 아마도 더 좋은 방법이있을 것입니다.

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