我想生成一串随机字母,比如从 az 一个接一个的 10 个字母,即下一个字母应该在一定延迟后显示在前一个字母之后,稍后,我想计算每个字母生成的次数,与我之前所做的不同,即我采用了预定义的字母数组并相应地生成了它们。
user2301239
问问题
6582 次
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 回答