在Javascript的函数内计数。

时间:2014-03-11 14:22:47

标签: javascript random

我有以下javascript代码:

nback.lightElement = function(index) {
    var letterArray = new Array('Lorem', 'Ipsum' , 'Dolor', 'Est');
    var r = Math.floor(Math.random()*4);
    var letter = letterArray[r];
    nback.numbers[index] = letter;
    nback.numbers.innerHTML = letter;
    nback.litCell = letter;
    nback.current = letter;
    nback.previous.push(nback.current);
};

nback.startGame = function() {
    nback.round += 1;
    nback.updateRound();
    nback.blink_count = 0;
    // Make a new game
    nback.queue = new Queue();
    for (i = 0; i < BLINKS; i++) {
    // Populate with random data, less fun than created games
    // but this is way easier to program.
    nback.queue.queue(Math.floor(Math.random() * 1));
    }


// Run the game loop every TIME_BETWEEN_ROUNDS
nback.intervalId = window.setInterval(nback.next, TIME_BETWEEN_BLINKS);
};

这为letterArray的{​​{1}}毫秒(例如1000)提供了一个随机字输出。该单词显示为1000毫秒,消失,另一个单词随机出现。这会循环TIME_BETWEEN_BLINKS - 次。

现在我不希望它从BLINKS中选择随机单词(letterArray是我主要关心的问题之一)。它应该一个接一个地展示它们。我尝试了很多不同的approches(主要是各种循环),但仍然无法使其工作。大部分时间我都试过循环,我得到了“未定义”(而不是实际的单词)或者什么都没有(空白)。

我使用https://github.com/chuckha/N-back作为参考。

非常感谢帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用在函数外部初始化的数组的索引。下面是一些代码,每当调用lightElement函数时,它都会从数组中提供下一个单词。它也包裹着。

var letterArrayIndex=0;
nback.lightElement = function(index) {
    var letterArray = new Array('Lorem', 'Ipsum' , 'Dolor', 'Est');
    var letter = letterArray[letterArrayIndex];
    letterArrayIndex = (letterArrayIndex+1) % letterArray.length;
    nback.numbers[index] = letter;
    nback.numbers.innerHTML = letter;
    nback.litCell = letter;
    nback.current = letter;
    nback.previous.push(nback.current);
};