如何在我的javascript代码中生成随机数?

时间:2011-10-09 05:27:17

标签: javascript

我正在使用一些第三方javascript在博客上的每个帖子中生成幻灯片。每个幻灯片必须具有唯一ID才能正常工作。我认为最简单的方法是在每个幻灯片加载到页面时为每个幻灯片生成一个大的随机数。

下面是代码相关部分的片段,其中POSTID代表随机数。请注意,必须在脚本下方的div中引用相同的随机数。

<script language="javascript" type="text/javascript">
        $(function() {
        $("#POSTID").webwidget_slideshow_dot({
        slideshow_time_interval: '',
        slideshow_window_width: '320',
        slideshow_window_height: '480',
        slideshow_title_color: '#17CCCC',
        soldeshow_foreColor: '#000',
        });
        });
</script>

<div id="POSTID" class="webwidget_slideshow_dot">
        <!-- some content goes here -->
</div>

非常感谢任何帮助!

由于

4 个答案:

答案 0 :(得分:5)

Math.random()生成[0,1]范围内的伪随机数。

  

返回[0,1]范围内的浮点伪随机数,从0(包括)到最大但不包括1(不包括),然后可以缩放到所需范围。 / p>

如果你想要一个大整数,在[0,999999]范围内,你可以缩放和舍入。例如,

((Math.random() * 1e6) | 0)

将产生[0,999999]范围内的伪随机整数。

要将伪随机ID附加到脚本,您可以执行以下操作:

<!-- Generate a random ID -->
<script>
var postID = 'post-' + ((Math.random() * 1e6) | 0);
</script>

<!-- Create a DIV with a generic ID. -->
<div id="POSTID">...</div>

<!-- Replace the DIV's ID with the generated ID -->
<script>$("#POSTID").attr('id', postID);</script>

<!-- Use the generated ID in a script. -->
<script>
(function() {
    $("#" + postID).webwidget_slideshow_dot(...)
})()
</script>

请注意,JavaScript的Math.random()不会产生unguessable numbers。只要您将其用作网页中的GUID生成器,这很好,但如果您将ID发送到服务器,则不应该依赖于不了解安全性的人。

答案 1 :(得分:2)

一个简单的随机数有可能重复和破坏你的逻辑。您无法使用javascript创建“真正的”GUID,但you can fake one使用多个随机元素并使您的架构更加稳固。

答案 2 :(得分:1)

为什么要使用随机数?只需使用计数器(var counter = 0)并在每次需要新ID时添加1。

$("#POSTID-" + counter++)

答案 3 :(得分:0)

随机数是一种方式,在其他答案中有很好的涵盖。

我正在使用不同的方法来获取唯一值:getTime()对象的Date属性返回自1970年1月1日以来的毫秒数,因此在每次刷新页面时都是唯一的:

<div class="webwidget_slideshow_dot">

和JS:

$(function() {
    var now = new Date();
    var ts = now.getTime();
    $(".webwidget_slideshow_dot").each(function(index) {
        this.id = "webwidget_slideshow_" + (ts + index);
        $(this).webwidget_slideshow_dot({
           slideshow_time_interval: '',
           slideshow_window_width: '320',
           slideshow_window_height: '480',
           slideshow_title_color: '#17CCCC',
           soldeshow_foreColor: '#000'
        });
    });
});