3

我想生成一串随机字母,比如从 az 一个接一个的 10 个字母,即下一个字母应该在一定延迟后显示在前一个字母之后,稍后,我想计算每个字母生成的次数,与我之前所做的不同,即我采用了预定义的字母数组并相应地生成了它们。

4

3 回答 3

5

使用以下方式生成此类字符串的更短方法String.fromCharCode

for (var i = 0, letter; i < 10; i++) {
    setTimeout(function() {
        letter = String.fromCharCode(97 + Math.floor(Math.random() * 26));
        out.appendChild(document.createTextNode(letter)); // append somewhere
    }, 2000 * i);
}

完整的演示涵盖了这个问题中的所有问题:http: //jsfiddle.net/p8Pjq/

于 2013-04-20T18:24:25.273 回答
3

使用该setInterval方法每隔一段时间运行代码。设置一个数组从一开始就计算每个字符,然后您可以在创建它们时而不是之后计算它们:

var text = '';
var chars = 'abcdefghijklmnopqrstuvwxyz';
var cnt = new Array(chars.length);
for (var i = 0; i < cnt.length; i++) cnt[i] = 0;

var handle = window.setInterval(function(){
    var ch = Math.floor(Math.random() * chars.length);
    cnt[ch]++;
    text += chars.charAt(ch);
    $('#display').text(text);
    if (text.length == 20) {
      window.clearInterval(handle);
      // now all characrers are created and counted
    }
}, 2000);

演示:http: //jsfiddle.net/R8rDH/

于 2013-04-20T18:05:05.170 回答
1

我正在窃取这个答案,但请看这里:Generate random string/characters in JavaScript

function makeid()
{
    var text = "";
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

    for( var i=0; i < 5; i++ )
        text += possible.charAt(Math.floor(Math.random() * possible.length));

    return text;
}
于 2013-04-20T17:46:21.447 回答