Javascript - если заявление не работает? - PullRequest
1 голос
/ 19 ноября 2009

Я пытаюсь установить активный класс в зависимости от URL. Я пытаюсь использовать код ниже, но в каждом случае он активирует активный класс для второй вкладки.

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
    }

Ответы [ 5 ]

6 голосов
/ 19 ноября 2009

Вы присваиваете, а не проверяете равенство в своем операторе if.

if(pathname == '/learn/subsection2') {
...
5 голосов
/ 19 ноября 2009
if(pathname = '/learn/subsection2') { // assignment
if(pathname == '/learn/subsection2') { // test for equality
if(pathname === '/learn/subsection2') { // test for equality without type coercion
4 голосов
/ 19 ноября 2009

Используйте == вместо = в операторе if.

4 голосов
/ 19 ноября 2009

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

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

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

2 голосов
/ 19 ноября 2009

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

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

if('/learn/subsection2' == pathname){ ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...