var i =1;
function waitForElClass(data){
var element = data.selected;
var index = data.index;
var findEl = document.getElementsByClassName(element)[index];
console.log(i);
i++;
window.setTimeout(function(){
if(!$(findEl).length){
waitForElClass(data);
}else{
console.log(findEl);
return findEl;
}
},500)
}
我正在尝试获取一个正在使用 JS 加载到页面上的元素(有时带有 ID、类或一组类元素之一。本示例属于后者),这意味着我需要等待每隔几毫秒询问一次。
我试图将它存储在一个变量中,使用
var data = {selected: 'new', index: 0};
var elem = waitForElClass(data);
它正在查找元素,打印它,但不将其存储在elem
中。有任何想法吗?谢谢!
最佳答案
当您执行异步任务时,我建议修改您的代码以接受回调或返回 promise 。这是回调修改:
var i =1;
function waitForElClass(data, cb){
var element = data.selected;
var index = data.index;
var findEl = document.getElementsByClassName(element)[index];
console.log(i);
i++;
var to = window.setInterval(function(){
if($(findEl).length){
console.log(findEl);
cb(findEl);
window.clearInterval(to);
}
},500)
}
然后可以按如下方式使用:
var data = {selected: 'new', index: 0};
var element;
waitForElClass(data, function(el) {
element = el;
//or something more meaningful here
});
关于javascript - 等待元素存在,循环,然后存储在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36047756/