从数组中快速打印对象,然后循环

时间:2015-02-25 18:56:09

标签: javascript jquery arrays

我是JavaScript新手,但有其他编程语言的经验。

我很难用JavaScript设计一个简单的任务:

鉴于一系列字母,我想随机选择9个字母,这些字母会一个接一个地快速打印出来。然后,我想显示两个用户将向左或向右选择的随机字母(以选择最近在列表中出现的字母)。然后在选择之后,随机挑选另外9个字母。

我对如何使字母快速打印而不是一起打印感到茫然......?我也希望这次运行10次。有没有办法用jQuery做到这一点?

这是我到目前为止所做的:

var stimuli = new Array('B','C', 'D', 'F', 'G', 'H')
var num_trials = 10; 

function trials() {
    while (num_trials > 1) {

        //fills array with random letters
        var random = new Array()
        for (var i = 0; i < 9; i++) {
            //randomly picks 9 
            random[i] =  stimuli[Math.floor(Math.random() * stimuli.length)]
        }

        //from "random" array,displays stimuli
        for (var i = 0; i < random.length; i++) {
            document.write(random[i]);

        }

        document.write("<br>");

        //randomly picks two letters from random array to display
        document.write(random[Math.floor(Math.random() * random.length)]+ " , ")
        document.write(random[Math.floor(Math.random() * random.length)])


        //user selects, left, right or up

        num_trails--; 


    }
}

1 个答案:

答案 0 :(得分:0)

要逐个打印字母,您必须使用setIntervalsetTimeout。我使用setInterval,用以下内容替换当前的for循环:

var i = 0;
var printer = window.setInterval(function(){
  if (i < random.length) {
    document.write(random[i]);
  } else {
    window.clearInterval(printer);
    /* Here goes the rest of your code after the for loop, eg.
    document.write("<br>");
    document.write(random[Math.floor(Math.random() * random.length)]+ " , ");
   etc. */
    return;
  }
  i++;
}, 300);

以上代码应依次打印每个字母。

i >= random.length时,它将在for循环之后运行所有其他代码(for循环已退出)。