目标: 我想填充一个100,000位π的页面,一次一个数字。 以下是我到目前为止:http://jsfiddle.net/xnW6V/
它只是从变量重复相同的值。 我需要做的是变量100,00长(我从这里开始:http://www.geom.uiuc.edu/~huberty/math5337/groupe/digits.html) 并在每个setInterval事件中,向div添加一个新数字。
我提到了字符串的大小,以防万一传统方法存在问题。
感谢。
答案 0 :(得分:3)
var i = 0,
pi = '3.1415926535897932384626433832795049445',
max = pi.length,
div = $('div'),
timer = setInterval(function() {
div.append(pi.charAt(i++));
i == max && clearInterval(timer);
}, 50);
这里是小提琴:http://jsfiddle.net/yBtPE/
P.S。您确定要这样做吗?在将其推送到生产站点之前,您应该认真进行一些性能测试。
答案 1 :(得分:2)
听起来最好的方法是对长PI数字字符串进行硬编码,并且只是定期增加显示给用户的范围
(function() {
// You'll need to expand to the 100,000 digits you want to show. Shortened here
// since it's a sample
var pi = "3.141592653589793238462643383279502884197169399375105820974944592307816406286 208998628034825342117067982148086513282306647093844609550582231725359408128481";
var index = 5;
$('div').text(pi.substring(0, 5));
var timer = setInterval(function() {
$('div').append(pi[index]);
index++;
if (index === pi.length) {
clearInterval(timer);
}
});
})();
小提琴:http://jsfiddle.net/xnW6V/3/
答案 2 :(得分:1)
我喜欢JaredPar的方法,但这是一种不同的方法(类似于你现在的方法)。只需将PI存储为字符串,并一次显示一个字符:
// var clipped so the SO markdown parser won't hang
var bigPI = "3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460";
var current = 0;
setInterval(function() {
$("div").append(bigPI.charAt(current));
current++;
}, 50);
注意强>
建议您在current == bigPI.length
时停止计时器。