不可能在javascript中随机渲染变量



我正在创建一个小比赛来赢得奖品。

我有4个奖项,我希望每10天有一次获胜。

我有两个问题:

  1. 当我点击图像.panneau(试图获胜)时,它总是在你没有获胜时附加消息

  2. 我不知道如何随机获得指示获胜的变量

下面是我当前的代码:

$(".panneau").click(function(){
    if($(".panneau.uncover").length == 0){
        $(this).addClass("uncover");
        $("#intro").hide();
        $.ajax({
            url:'index.php',
            type:'POST',
            success:function(data){
                var nomDuLot ="";
                $('#registration input[type=hidden]').remove();
                $('#registration').append('<input type="hidden" name="myprize" id="myprize" value="'+data.prize+'"/><input type="hidden" value="'+data.id+'" id="id" name="id"/>'+data.nonces);
                if(data.prize=="1"){
                    nomDuLot = "price1";
                }else if (data.prize=="2"){
                    nomDuLot = "price2";
                }else if (data.prize=="3"){
                    nomDuLot = "price3";
                }else if (data.prize=="4"){
                    nomDuLot = "price4";
                }
                setTimeout(function(){
                    if(data.prize=="1" || data.prize=="2" || data.prize=="3" || data.prize=="4"){
                        if(data.prize=="1"){
                            $(".panneau.uncover").append("<p class='long'>Bravo! Vous avez gagné<br><span class='lot'>"+nomDuLot+"</span></p>");
                        }
                        $("#inscription_auto_tirage_au_sort").html("Vous devez vous inscrire pour valider votre gain.<br>En plus, vous participerez automatiquement au tirage au sort pour tenter de gagner 1 set de pneus hiver d’une valeur de 500 €.");
                        $("#etape3 > h2.gagnant").addClass("active");
                    }else{
                        $(".panneau.uncover").append("<p>Vous n'avez<br>&nbsp;pas gagné...</p>");
                        $("#inscription_auto_tirage_au_sort").html("Mais tout n’est pas perdu. Inscrivez-vous pour tenter de gagner blablabla.");
                        $("#etape3 > h2.perdant").addClass("active");
                        // je force le gain à 0
                        $("#myprize").val("0");
                    }
                    $("#etape2").show();
                }, 100);
            }
        });
    }
});
  1. index.php必须返回响应的prize密钥中的随机获胜。你总是收到失败的消息,因为没有一个获胜条件被满足(根据你的原始文本"ajax变量随机[…]我不知道该怎么做")。

    if(data.prize=="1" || data.prize=="2" || data.prize=="3" || data.prize=="4"){
    

    只有当index.php的响应是这些字符串之一时,才会显示获胜。

  2. 如果你只想每10天赢一次,你需要在某个地方存储一个日期。它可以像写入磁盘的文本文件一样简单,也可以像写入数据库中的一行一样简单。但在某个地方,你需要存储上一次获胜的时间。然后,每次向index.php发出请求时,根据当前日期检查该日期。如果差值为10天,则随机生成一个win。

    您也可以有一个已经赢得奖品的列表,或者简单地动态计算可用的奖品(搜索目录/prizes以获得文件列表,当赢得奖品时,删除该文件)。对于这个问题没有100%正确或错误的答案,但是您可能想要考虑使用数据库来使问题更易于维护和报告(例如,"我想知道还剩下哪些奖品?"可以查询数据库而不是搜索文件)。

    你的"每10天"的逻辑可以是这样的:

    if( $today >= $lastWin + '10 days' ){
        $random = mt_rand( 0, 100000000 );
        if( $random === 569351 ){
            $prize = getRandomAvailablePrize();
        }
    }
    

    因此,在最后一次中奖是在10天前或更长时间内,百万分之一的人(统计上可能是或多或少)命中数字"569351"将赢得奖品。

当然,这都是伪代码,所以实际的实现将更深入一些,但这是为了给你一个想法。不要忘记在POST后返回JSON响应

{ "prize": "[number]" }

其中[number]1234,若为空则为空

相关内容

  • 没有找到相关文章

最新更新