如何等待/检查元素是否存在

时间:2018-08-16 03:57:51

标签: javascript jquery

我想知道是否有一种方法可以检查元素是否存在,然后执行一个函数,然后重复但带有下一个id。

示例:如果log2643673存在,则执行功能,然后检查或等待log2643674存在,如果存在,则执行功能

如果不存在,请继续检查其存在并运行,然后找到下一个元素

var checkExist = setInterval(function() {
   if ($('#log2643673').length) {
      console.log("it exists!");
   }
}, 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<li id="log2643670" data-log="2643670" class="logs">Text here</li>

<li id="log2643671" data-log="2643671" class="logs">Text here</li>

<li id="log2643672" data-log="2643672" class="logs">Text here</li>

<li id="log2643673" data-log="2643673" class="logs">Text here</li>

对不起,我的英语不好

5 个答案:

答案 0 :(得分:3)

尝试一下

$(function() {
    var logIdStart = 2643670; // the start log id
    // timer to check if element exists
    var checkExist = setInterval(function() {
       if ($("#log" + logIdStart ).length) {
          console.log("it exists!");
          logIdStart++; // update id only if element is found             
       }
    }, 1000 /* change checking frequency if needed*/ );

});

在这里播放

$(function() {
    var logIdStart = 2643670; // the start log id
    $('button').on('click',function(){   
    	$("body").append('<li id="log'+logIdStart+'">log'+logIdStart+'</li>');
    
    });
    // timer to check if element exists
    var checkExist = setInterval(function() {
       if ($("#log" + logIdStart ).length) {
          $("body").append("log" + logIdStart + " exists!<br />");
          logIdStart++;
       }
    }, 1000 /* change checking frequency if needed*/ );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<li id="log2643670" data-log="2643670" class="logs">Text here</li>

<li id="log2643671" data-log="2643671" class="logs">Text here</li>

<li id="log2643672" data-log="2643672" class="logs">Text here</li>

<li id="log2643673" data-log="2643673" class="logs">Text here</li>
<div>
<button>Add Input</button>
</div>

答案 1 :(得分:0)

评估元素的长度是否大于cero。

1

答案 2 :(得分:0)

如果您具有随机ID并且需要检查元素是否存在,则可以执行以下操作:

$(function() {

    var myListOfIds=$('li');   //Hold all the li tags.    
    var cnt=0;  // we will use it in array iterate.
    	
    // timer to check if element exists
    var checkExistInterval = setInterval(function() {
        if(cnt== (myListOfIds.length)){
          console.log(" Yeah, clear the interval,we have done it :)")
          clearInterval(checkExistInterval);
        }         
        else if ($("#" + myListOfIds[cnt].id ).length) {
              console.log(myListOfIds[cnt].id +" Yes, I am in...");
              cnt++; 
        } 
    }, 1000 /* Lets change checking frequency if needed*/ );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<li id="log2643670" data-log="2643670" class="logs">Text here</li>

<li id="log2643671" data-log="2643671" class="logs">Text here</li>

<li id="log2643672" data-log="2643672" class="logs">Text here</li>

<li id="log2643673" data-log="2643673" class="logs">Text here</li>

<li id="IAmRandom" data-log="2643673" class="logs">Text here</li>
<div>

</div>

答案 3 :(得分:0)

假设您知道要查找的元素的起始ID,并且它们以数字顺序排列。

您可以使用纯Javascript

let counter = 2643670;
let checkExist = setInterval(function() {
   const id = 'log' + counter;
   const element = document.getElementById(id);
   if (!!element) {
      // Do you function call here
      counter++;
   }
}, 1000);

答案 4 :(得分:0)

你去了。 :)

 function checkExist(startID) {
     setInterval(() => {
       if (document.getElementById(startID)) {
         console.log(`ID ${startID++} exists`);
       }
     } ,1000)
 }