2009-11-19 91 views
1

我想设置一个类来激活取决于网址。我试图使用下面的代码,但是在任何情况下,它都会激活第二个选项卡的活动类。Javascript - 如果陈述不起作用?

var pathname = window.location.pathname; 

if(pathname = '/learn/subsection2') { 
      $("ul.tabs li:eq(1)").addClass("active").show(); //Activate second tab 
      $(".tab_content:eq(1)").show(); //Show second tab content 
    } else { 
      $("ul.tabs li:first").addClass("active").show(); //Activate first tab 
      $(".tab_content:first").show(); //Show first tab content 
    } 

回答

6

您正在分配而不是在if语句中检查相等性。

if(pathname == '/learn/subsection2') { 
... 
+3

呃犯罪......这是漫长而漫长的一天... :)谢谢。 :::咧嘴笑,然后隐藏在一块岩石下::: – phpN00b 2009-11-19 00:56:37

+0

是的,你正在分配,而不是比较路径名和字符串的值。 – putolaruan 2009-11-19 00:56:38

5
if(pathname = '/learn/subsection2') { // assignment 
if(pathname == '/learn/subsection2') { // test for equality 
if(pathname === '/learn/subsection2') { // test for equality without type coercion 
+0

只适用于PHP – mauris 2009-11-19 00:59:14

+3

和JavaScript,Ruby和C#... – 2009-11-19 01:00:06

+2

和javascript。 – 2009-11-19 01:00:57

4

您使用=代替==,一种常见的编程错误。 =是转让,==是比较。

if (pathname == '/lean/subsection2') { // ... 

当使用=,它的字符串/lean/subsection2赋予变量pathname评估它作为一个布尔值,它始终是真(它不得不是虚假的或未定义的),所以它总是采取积极的条件。

4

if声明中使用==而不是=

2

您在比较中使用了=而不是=====。这就是为什么很多程序员会将声明转移到所以它会无意中抛出一个错误与运行代码的错误......它是一个非常常见的错误!

下面是同样的if g语句切换的例子。如果你使用这种格式,但犯了同样的错误,它会抛出一个错误,它会帮助你更快地找到它:

if('/learn/subsection2' == pathname){ ... }