Javascript中奇怪的if-else行为

时间:2015-04-17 16:59:55

标签: javascript

我正在尝试制作一个简单的Javascript按钮来切换屏幕上和菜单外的菜单。我有一个if-else语句,用于检测<nav>的当前位置,并将其left css属性更改为该效果。

JSBin

现在,正如您在我的代码中所看到的,这将显示菜单一次,但之后不会隐藏它:

if (navStyle == '0') { setNav('-500px'); }
else { setNav('0'); }

这将正确地完成工作:

if (navStyle == '-500px') { setNav('0'); }
else { setNav('-500px'); }

奇怪吧?谁知道发生了什么?

1 个答案:

答案 0 :(得分:2)

这是因为宽度实际上永远不会等于0,它将类似于0px,具体取决于您选择的单位。你的第二组条件是有效的,因为它们首先检查宽度(500px),如果它不匹配则选择另一个(0px)。

您可以通过多种方式处理此问题,包括仅从0px中提取数字值,但是由于您已经开始使用它,因此将来需要注意的事项。 :)