javascript - 等待元素存在,循环,然后存储在变量中

标签 javascript jquery node.js

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/

相关文章:

javascript - 修复了与页面其余部分一起水平滚动的顶部栏

javascript - 无法通过 Node.js 中的 Sequelize 从数据库中选择数据

Javascript - 奇怪的数学输出

javascript - 中心 SVG 组元素

javascript - 如何设置使用ajax动态创建的HTML表格列的唯一名称和ID

node.js - 将 Node 模块的本地修改部署到 Cloud Functions for Firebase

node.js - 使用 Node JS 更新 mongoDB 集合中的值

javascript - 字体大小,使用追加时div框大小不变

javascript - 如何不增加显示p元素

jquery - 如何使用 CSS 创建管理固定背景?