此计数器编号的变化规律是:年 * 月 / 日 + 可变序号(自动顺序号)- 随意数(常量)= 编号(最后结果不含小数,可用四舍五入方式确定最后数值)。 
    此计数器中,年月日与可变序号是自动的,也就是说,年月日是按服务器的日期变化,而序号是某一JS自动变化(排序)的计数代码自动变化。随意数则是由用户自已选加的一个不变的量(数)。最后结果的显示方式是:编号-序号(注意,两数间的“-”不是减号,而是排序号。

解决方案 »

  1.   

    这样么?function sjoin(o)
    {
    return Math.round(o.year*o.month/o.date+o.index-sjoin.rand)+"-"+o.index;
    //年 * 月 / 日 + 可变序号(自动顺序号)- 随意数(常量)= 编号
    }
    sjoin.rand = 568; //随意数(常量)
    alert(sjoin({year:2013,month:4,date:3,index:183}));
      

  2.   

    二楼所示代码,是可以的。不过,代码中的index:183 不是变量,所以与一楼要求的自动序号不符。自动序号是根据一个常量与一个变量的乘积确定的值随时改变的。二楼主可把您的代码的index的值改成:index=date*183
      

  3.   

    date*183 也不太理想,最好是每次都变动一下。最好是采用短期内改变的值,如时,分。
      

  4.   

    那就就Math.random()function sjoin(o)
    {
    o.index = Math.floor(o.index*Math.random());
    return Math.round(o.year*o.month/o.date+o.index-sjoin.rand)+"-"+o.index;
    }
    sjoin.rand = 568; //随意数(常量)
    alert(sjoin({year:2013,month:4,date:3,index:3183}));
      

  5.   

    Math.random()向下取值,其随机数是一个不确定的值,想核对(o.year*o.month/o.date+o.index-sjoin.rand)+"-"+o.index;的构成就很难办到。因o.index是由可显示的+o.index; 与也可显示的小数Math.random() 相乘的积构成,它与index:3183间存在什么样的关系呢?o.index*Math.random()如等于3183的话,倒中以通过核对的方式确定编号是否正确。但我试过,它并不等于3183。而是一个无法确定的量。也就使楼主的想通过编号验证真伪的构思失去了意义。 
      

  6.   

    倒中以——打错了,应为:倒可以
    希望二楼主把您的代码改成符合(诸如)o.index*Math.random()=3183(index) 类运算形式,这样问题才能满解决。否则您那代码所产生的编号很难通过其运算公式核定原件编号是否正确。因随机数没法确定精确值。
      

  7.   

    我又试了多次,发现您的代码中所列的({year:2013,month:4,date:3,index:3183})数值并不随时间变化变动,而我以前都是按时间变化试算的,当时已是4日,按运算公式输入准确的时间后算出的值都不正确。后来改用3日后计算,却正确了。我不明白你这代码中,日期怎么不随时间变化呢?如您还有办法使年月日能按时间变化变动的话,请改一下({year:2013,month:4,date:3,index:3183})这段不随时间变化的代码。
    我现在结贴给分了,给你60分。至于上边代码,改不改,由你自己定吧。