强制console.log错误停止

时间:2016-06-28 15:02:42

标签: javascript jquery

我有一个jQuery函数,在单击链接时运行添加该函数创建一个ui-bootstrap.js id的HTML元素。所以现在我想每2秒运行一次另一个功能。在两个条件下。

第一个条件

如果ID为my_ele的元素不存在。

第二个条件

如果标识为my_ele的元素不等于my_ele

所以我运行了这段代码:

block

现在我对代码没有任何问题,因为它工作正常,但我的问题是,如果链接没有被点击,这将创建元素。我的console.log中出现错误setInterval(function(){ if(($("#my_ele").lenght == 0) || (document.getElementById('my_ele').style.display == 'none')){ //run function here },2000); 请问如何强制停止此错误,或者是否有办法运行我的代码来阻止错误?

3 个答案:

答案 0 :(得分:1)

您可以像这样更改代码:

setInterval(function(){
    if($('#my_ele').css('display') != 'block') { 
        // your code here...
    }
}, 2000);

您无需测试#my_ele是否存在,好像不存在display不是'阻止'。

答案 1 :(得分:0)

(未经测试)

只有元素存在时,才应检查元素是否具有某种样式。

setInterval(function(){
    if(($("#my_ele").length == 0) || ($("#my_ele").length > 0 && ($("#my_ele").style.display == 'none'))){
        //run function here
    },2000);

答案 2 :(得分:0)

我修复了你的拼写错误,删除了无关的括号并将第二个条件更改为jQuery:

setInterval(function(){
    if($("#my_ele").length == 0 || $("#my_ele").is(":hidden")){
        //run function here
    },2000);
}

进一步阅读:https://api.jquery.com/hidden-selector/

  

由于以下几个原因,可以将元素视为隐藏:

They have a CSS display value of none.
They are form elements with type="hidden".
Their width and height are explicitly set to 0.
An ancestor element is hidden, so the element is not shown on the page.

====

限制DOM抓取和提高效率的最佳做法是设置一个变量来“缓存”一个元素(注意$myEle变量):

setInterval(function(){
    var $myEle = $("#my_ele");
    if($myEle.length == 0 || $myEle.is(":hidden")){
        //run function here
    },2000);
}