如何从数组中返回随机值?

IT技术 javascript
2021-03-02 10:40:10

我正在使用 jQuery 验证插件,并希望在成功时返回一个随机值。

现在我正在尝试使用:

     var success_message = new Array ();
     success_message[0] = "Good!";
     success_message[1] = "Ok!";
     success_message[2] = "Great!";
     success_message[3] = "Perfect!";
     success_message[4] = "Nice!";
     success_message[5] = "Awesome"; 
     var i = Math.floor(5 * Math.random())

然后我需要输出我使用的值:

 $(document).ready(function(){
     var validator = $(".contactform").validate({
        success: function(label) {
           label.addClass("valid").text(success_message[i])
        }
     }); //end form validate code
 });

这将选择一个随机值,但对每个成功消息使用相同的值,而不是为每个字段选择不同的值。

3个回答

您可以存储messages数组并计算要随时显示的消息,如下所示:

var messages = ["Good!", "Great!", "Awesome!", "Super!", "Nice!"];
function getMessage() {
   return messages[Math.floor(Math.random() * messages.length)];
}

在这里尝试一下,然后只需拨打getMessage您的.text()电话,如下所示:

label.addClass("valid").text(getMessage());
@BandonRandon - 我的印象是你只有一个,只是一会儿:)
2021-04-21 10:40:10
@BandonRandon - 更新为每个元素随机,我建议您可能想要更进一步并删除使用过的消息,因此不能重复。
2021-05-04 10:40:10
太棒了!谢谢,还有几个问题,如果我确实想让它不重复,我会怎么做?也因为它在 keyup 上初始化它会随着每次按键或鼠标点击而重新生成。我可以使用 stop() 或其他东西来阻止它吗?
2021-05-10 10:40:10
抱歉,我应该说清楚每个表单元素都有一个。
2021-05-14 10:40:10
这几乎有效,但为每个字段元素返回相同的消息。
2021-05-16 10:40:10

我们可以将方法添加到数组。

Array.prototype.getRandomVal = function(){
    return this[Math.floor(Math.random()*this.length)];
};

messages.getRandomVal();
function sucess() {
 message = ["Good!","Awesome!","Super!","Nice!","Great!"];
 return message[Math.floor(Math.random() * message.length)];
}

 $(document).ready(function(){
     var validator = $(".contactform").validate({ ...
              success: function(label) {
    label.addClass("valid").text(success());
 }
      }); //end form validate code
         });