今天再完善公司网站的时候,我需要用JQuery获取到页面中某一元素的高来做滚动判断。

然后我查到了这样一个页面:jQuery中的.height()、.innerHeight()和.outerHeight()

页面中有着这样一段话.css('height') 和 .height()之间的区别是后者返回一个没有单位的数值(例如,400),前者是返回带有完整单位的字符串(例如,400px)。

我没有注意这两个之间的区别,仅仅认为即使带着px,也是一个数字。(我承认我当时脑抽了

于是在js中判断的时候,无论我怎样修改数值,也无法判断为真

我在控制台输出每一个部分,然后靠口算计算每个部分相加后的结果,反复试验

明明数值来看判断应该为真,但是就是一直输出为false

1
2
topHeight = $('#slides').children("li").children("img").css('height');
if (scrollTop > (startOpen + topHeight) && scrollTop < (startOpen + topHeight) + movePX){}

这里边的if输出一直为假

直到我加法做累了

用了一下

1
console.log("result: "+ startOpen + topHeight);

控制台输出的结果竟然是78151256px。。。

看到这里我当时就懵了几秒钟,然后顿时反应过来,这根本就不是两个数字相加的结果。。这完全是字符串相加的结果呀。

hhhhhh

于是我突然想起来是不是我这个获取的有问题,然后再次回到刚才那个教程页面,我才发现原来是我自己忽略了这个部分的内容。

emm

于是真的就是字符串加减的原因,判断always为false

也就是说我用两个字符串去做的判断,能一致的话才会有鬼呢


这样,我的踩坑日记就写完了

没错,我又水了一篇文章,不过这个是自己的false集锦,所以这个系列今后也会继续下去