2009-11-19 2 views
1

Я пытаюсь установить класс для активного в зависимости от URL. Я пытаюсь использовать код ниже, но в каждом случае он активирует активный класс для второй вкладки.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

О criminy ... Это был долгий, долгий день ... :) Благодарю. ::: усмехается, а затем прячется под скалой ::: – phpN00b

+0

Yup, вы назначаете, не сравнивая значения пути и строки. – putolaruan

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

+3

И JavaScript, и Ruby, и C# ... –

+2

и javascript. –

4

Вы используете = вместо ==, общая ошибка программирования. = - задание, == сравнение.

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

При использовании =, он присваивает строку /lean/subsection2 к переменной pathnameи оценивает его как логическое значение, которое всегда верно (он должен был бы быть ложным или неопределенным), так что это всегда берет блок положительного условия.

4

Использовать == вместо = в заявлении if.

2

Вы использовали = вместо == или === для сравнения. Вот почему многие программисты смещают утверждение вокруг, поэтому он непреднамеренно вызывает ошибку или запуск кода ... это очень распространенная ошибка!

Приводится пример того же if g, что и речь. Если бы вы использовали этот формат, но сделали ту же ошибку, что бросил бы ошибку, которая бы помогла вы размещали его быстрее:

if('/learn/subsection2' == pathname){ ... } 
Смежные вопросы