javascript - jQuery 返回长度属性 undefined object

标签 javascript jquery google-chrome

我正在检查某些元素是否存在:

if ($(selector).length > 0){
....
}

但是,有时返回的对象(即使该元素存在于 DOM 中并且已经返回)没有 length 属性,所以这永远不会计算为真。 这个错误出现在 chrome 中。 您知道问题出在哪里吗?

编辑: 我使用这段代码:

var variable;
for(let elem in selectors){ 
    if($(elem).length > 0){
      variable = true;
      break;
    }
    else
      variable = false;
  }

给定一个选择器列表,如果至少有一个选择器存在,variable 为真。这是在谷歌浏览器扩展的内容脚本中。这段代码在插件中运行后,即使在谷歌浏览器的控制台中,我也会遇到同样的问题。

编辑: 此代码不会产生问题:

var variable;
    if($(elem).length > 0){
      variable = true;

    }
    else
      variable = false;

看来问题是 for 循环或/和 break; 语句。但是,需要一个 for 循环才能使此代码适用于一系列选择器,而不仅仅是一个选择器。

最佳答案

看来 document.querySelectorAll() 不会产生同样的问题并且按预期工作。所以我用这个代替 $()。如果你只想检查一个元素是否存在,它工作得很好。 因此,如果网页中至少存在一个选择器,则此代码始终返回 true:

function exists(selectors){
   var selectorExists = false;
   for(let i=0; i < selectors.length; i++){ 
      let element = document.querySelectorAll(selectors[i]);
      if(element.length > 0){
         selectorExists = true;
         break;
      }
    }
   return selectorExists;
}

关于javascript - jQuery 返回长度属性 undefined object ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37810762/

相关文章:

javascript - 如何确保 React props 的类型正确

javascript - Bootstrap V5 手动调用模态 myModal.show() 不起作用( Vanilla javascript)

javascript - 自定义绑定(bind)到可观察数组而不调用更新函数

javascript - 将一个文本输入字段中的值添加到预先填充的输入字段

java - Chrome 浏览器和 Java 消息传递

Javascript 从对象数组中的对象数组获取对象数组

javascript - Facebook - 确定用户是否是外部粉丝

javascript - 类型错误 : Object doesn't support this action in IE 11

javascript - Chrome浏览器保存密码弹出窗口

javascript - jQuery 替换鼠标光标