我有一些进度条,每个进度条都绑定到div,使用' setTimeouts'进行更新。
它的运行方式如下:
myDiv._timer = setTimeout(function () {
func_name(data)
}, 1);
修改:根据要求提供了我的一个进度条的工作示例:http://jsfiddle.net/H4SCr/
然而问题是,我有多个div,其中有自己的数据用于计算进展的进度条。这意味着在运行中我说有5个不同的超时运行。
我不是javascript的专家,但肯定有一种方法可以将这种方法结构化为仅仅一次性用于所有进度条,或者我目前的方法是最好的方法吗?
注意:我不使用jQuery。我更喜欢用香草javascript来学习!
答案 0 :(得分:1)
检查一下: http://jsfiddle.net/MZc8X/11/
我创建了一个包含容器ID及其增量值的对象数组。
// array to maintain progress bars
var pbArr = [{
pid: 'bar1', // parent container id
incr: 1 // increment value
}, {
pid: 'bar2',
incr: 2
}, {
pid: 'bar3',
incr: 3
}, {
pid: 'bar4',
incr: 4
}, {
pid: 'bar5',
incr: 5
}];
然后,调用函数创建进度条...
var loopCnt = 1; // loop count to maintain width
var pb_timeout; // progress bar timeout function
// create progress bar function
var createPB = function () {
var is_all_pb_complete = true; // flag to check whether all progress bar are completed executed
for (var i = 0; i < pbArr.length; i++) {
var childDiv = document.querySelector('#' + pbArr[i].pid + ' div'); // child div
var newWidth = loopCnt * pbArr[i].incr; // new width
if (newWidth <= 100) {
is_all_pb_complete = false;
childDiv.style.width = newWidth + '%';
} else {
childDiv.style.width = '100%';
}
}
if (is_all_pb_complete) { // if true, then clear timeout
clearTimeout(pb_timeout);
return;
}
loopCnt++; // increment loop count
// recall function
pb_timeout = setTimeout(function () {
createPB();
}, 1000);
}
// call function to initiate progress bars
createPB();
希望,它适合你。