我想生成一串随机字母,从az开始一个接一个地说10个字母,即下一个字母应该在一定延迟之后显示在前一个字母之后,之后,我想计算每个字母有多少次已经生成,不像我以前做的那样,即我已经采用了预定义的字母数组并相应地生成它们。
答案 0 :(得分: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/
答案 1 :(得分: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);
答案 2 :(得分: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;
}