javascript - offset() 未定义但 == 或 === 不这么认为

标签 javascript jquery undefined

我们使用的 jQuery 版本是 1.10.2。

在特定屏幕上,我们使用 jQuery 获取 DOM 元素并尝试获取其 offset() 对象。有时对象可能不会显示,根据 jQuery 文档,在这种情况下不支持 offset()。

这一切都很好,但真正让我头晕的是为什么如果我尝试检查 offset() 对象是否不同于未定义的代码总是在条件内?

我的代码(由于保密协议(protocol)而简化)如下:

var isCurrent = $('.detail-current[value=\'true\']:first');
if (isCurrent != 'undefined') {
   var button = isCurrent.closest('.batch-item').find('.batch-item-top').find('input[name=\'edit\']');

   var myOffsetTop = 0;
   if(button.offset() != 'undefined')
      myOffsetTop = button.offset().top;

   $('html, body').animate({
      scrollTop: myOffsetTop - 50
   });
}

当我使用 IE 开发工具对此进行调试时,我在控制台上看到 button.offset() 未定义但 button.offset() != undefined 返回 true!!

有人知道为什么会发生这种情况以及我们如何最好地处理它吗?

谢谢。

最佳答案

您正在检查它是否是一个名为 undefined 的字符串,而不是它实际上是否未定义。

if (typeof something === "undefined") 
  alert("something is undefined");

要检查它是否为 NULL,请使用 if (null === something)

关于javascript - offset() 未定义但 == 或 === 不这么认为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17557085/

相关文章:

javascript - 使用 javascript 启动后台进程

javascript - 如何使用 jQuery 模拟多页面站点?

javascript - 是否有 HTML 表单的标准表示?

javascript - js中未定义的参数

javascript - angularjs 使用 .map 不是一个函数

javascript - 是否可以使用jquery从嵌入文件中访问DOM信息?

jquery - div 跟随鼠标但仍然附加到另一个 div [眼睛效果]

javascript - Fusioncharts 中的可滚动 X 轴

PHP: strip 中 undefined offset

javascript - undefined 和 NaN,隐式与显式转换为 boolean 值