我想找到带延迟的javascript元素。在第一步,我做了这个,它的工作原理。
function mytag() {
var elements = document.getElementsByTagName('div');
for (var i=0, im=elements.length; im>i; i++) {
if (elements[i].className ==='hi'){
alert('found');
}}
}
在第二步中,我对代码进行了一些更改,以便在迭代之间放置延迟。我跟着this link但是无法使它工作。怎么了?
function mytag() {
var elements = document.getElementsByTagName('div');
for (var i=0, im=elements.length; im>i; i++) {
(function(i){
setTimeout(function(){
if (elements[i].className ==='hi'){
alert('found!');
}
}, 3000 * i);
}(i));
}
}
答案 0 :(得分:2)
以下是如何在查找函数中添加异步的示例:
function findElements() {
var elements = document.getElementsByTagName('div');
var index = 0;
var findNext = function() {
var element = elements[index];
index++;
if (element.className === 'hi'){
// Item found
console.log('found:'+element);
}
if (index < elements.length) {
setTimeout(findNext, 100);
}
};
findNext();
}
findElements();
答案 1 :(得分:1)
function sleep(milliseconds) {
var start = new Date().getTime();
while (1) {
if ((new Date().getTime() - start) > milliseconds) {
break;
}
}
} // sleep end
然后在你的循环中调用sleep(3000)
。
编辑:这是阻止延迟的方式。对于异步,非阻塞延迟,您可以使用递归函数。