백분율을 기준으로 JavaScript 컨텐츠 회전
-
06-07-2019 - |
문제
이와 같은 비율에 따라 자리 표시 자 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)
}
제휴하지 않습니다 StackOverflow