JavaScript shuffle数组提交和计数

时间:2015-06-11 12:18:59

标签: javascript html arrays

我想在JavaScript中使用<input/>的提交对数组进行随机播放,然后将[0]从数组中吐出到ID为message的div中。但是当我再次按下提交按钮时。我想获得数组的[1]。在下一次提交[2]。只要数组是,我想继续这个。而不是从[0]开始。

我希望它如何运作:

HTML:

<form action="" method="post" onsubmit="return submit()">
<input type="submit" id="submit" value="Submit!">
</form>
<div id="message">

JS:

function submit() {
message = ["Message 1","Message 2","Message 3"] // I want more messages than this.
// The shuffle script here.
document.getElementById("message").innerHTML = message;
return false;
}

我已经设置了阵列。但我希望它被洗牌,并在第二次提交时吐出另一条消息,这样我就不会有两次相同的消息。

这个想法只是从数组中获取一条随机消息,而不会在第二次提交后两次收到相同的消息。

如果您有这样做的想法请告诉我。

3 个答案:

答案 0 :(得分:1)

您可能希望在功能之前设置计数器,然后在功能内部将消息设置为阵列中的计数器位置。然后当你的计数器达到数组的长度时,将计数器重置为0.这样的东西

var count = 0;
var message = ["Message 1","Message 2","Message 3"] // probably want this outside your submit function so its not declared everytime the function is called
function submit() {
  // The shuffle script here.
  document.getElementById("message").innerHTML = message[count];
  if ((count + 1) >= message.length) {
    count = 0; // if the count + 1 is more than or equal to the array length then reset the counter
  } else {
    count += 1; // increase the count
  }
  return false;
}

答案 1 :(得分:0)

创建0到2之间的随机数。使用此数字作为索引从数组中获取消息,如下所示:

function submit() {
    var message = ["Message 1","Message 2","Message 3"];
    var randomIndex = Math.floor((Math.random() * 2));
    var myMessage = message[randomIndex];
    document.getElementById("message").innerHTML = myMessage;
    return false;
}

答案 2 :(得分:0)

你可以用这个函数来对数组进行洗牌。

    Call<Root> call = apiServiceImplementation.getResponseForApi(key, auth_key, password);

    call.enqueue(new Callback<Root>() {
        @Override
        public void onResponse(Call<Root> call, Response<Root> response) {
            Root data = response.body();
        }

        @Override
        public void onFailure(Call<Root> call, Throwable t) {

            Log.e("TAG", "onFailure: " );
        }
    });