这个想法是创建一个进度条但是有句号“。”。所以在div中,“。”每隔500毫秒附加一次,我想要做的是,如果div的长度(即“。”的数量)大于3,则开始删除一个“。”一次,然后在0时,再次启动该过程:
setInterval(function() {
$("#load").append(".");
var length;
$('#load').each(function(){
length = $("#load").val().length;
});
if (length > 3){
$("#load").remove(".");
}
}, 500);
答案 0 :(得分:3)
我不认为效率在这里是个问题。
但有几件事需要解决:
.val()
仅适用于表单输入 - 对于您想要的div .text()
。'load'
的div。如果还有更多,则应使用类而不是ID,如果不是,则不需要.each()
。最后,我会这样做:
var count = 0, dots = '...';
setInterval(function () {
var len = Math.abs(count++ % 6 - 3); // Gives only 3, 2, 1, 0, 1, 2, 3, ...
$('#load').text(dots.substring(0, 3 - len));
}, 500);
在此处查看演示:http://jsfiddle.net/Xp77Q/3/
答案 1 :(得分:0)
您执行此操作的方式效率非常低,因为它会在每次更改时触及多个DOM节点。
将当前进度值保存在变量中并使用single更新它会更有效
$('#load').html(...)
致电。