基于百分比的 Javascript 内容轮换

发布于 2024-07-24 01:57:18 字数 285 浏览 4 评论 0原文

我需要能够根据这样的百分比旋转占位符 div 内的内容。 旋转将在页面加载时发生。 因此,每次用户重新加载页面时,他都有机会在内容占位符中看到内容 1、2 或 3:

内容 1 = 显示 50% 的时间
内容 2 = 显示 25% 的时间
内容 3 = 显示 25% 的时间

我更喜欢 Javascript,但如果有更简单的方法可以在前端模板而不是代码隐藏的 ASP.NET 中执行此操作,那也是可以接受的。 如果您有解决方案或可以向我指出现有的脚本,我将不胜感激。 谢谢!

I need to be able to rotate content inside a placeholder div based on percentage like this. The rotation will occur on page load. So each time a user reloads a page he has these chances of seeing content 1, 2 or 3 in the content placeholder:

Content 1 = show 50% of the time
Content 2 = show 25% of the time
Content 3 = show 25% of the time

I prefer Javascript but if there is a easier way to do it in ASP.NET on the front end template not the codebehind, that is also acceptable. If you have a solution or can point me to an existing script I would appreciate it. Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

安人多梦 2024-07-31 01:57:18

实际上不需要乘法/取整/取整: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);

There's really no need to multiply/floor/ceil anything: the Math.random() function gives value which is larger than or equal to 0 and less than 1.

The following code would be a bit easier to maintain if you change the number of options or the chance percentage.

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);
蓝色星空 2024-07-31 01:57:18

对于脚本的随机部分,您只需使用 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 个)

For the random part of the script, you just have to play with Math.random
Something ugly and hardcoded would look like this :

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;

Then you just have to load the content with ajax.

An exemple in jQuery could look like :

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

But using ajax request on a page load is not the way to go imo. ( 2 server request instead of 1 if the random content is handled by the server )

三人与歌 2024-07-31 01:57:18

这是一个快速技巧,可能还有更好的方法。

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

Here is a quick hack, there is probably a better way.

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)
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文