#javascript #jquery #jquery-plugins
#javascript #jquery #jquery-плагины
Вопрос:
У меня есть плагин jQuery с оператором if в нем.
По какой-то странной причине (возможно, это просто я что-то напортачил) он всегда попадает в else
часть, даже если URL-адреса совпадают.
if (opts.startUrl == track.permalink.url) {
var active = true;
} else {
alert('|' opts.startUrl '| |' track.permalink_url '|');
var active = false;
}
Проверьте это @ http://dev.upcoming-djs.com
Комментарии:
1. Я бы распечатал, что такое startUrl и permalink.url, например, с помощью console.log. Убедитесь, что они действительно идентичны и в них нет конечного или переднего пробела. Не уверен, что здесь используется принуждение к типу — возможно, вы захотите взглянуть на использование ===
2. @planetjones 1, я тоже думал ===. URL-адреса выглядят аналогично из его примера. Другим вариантом было бы использовать . toString() для каждой части.
3. @planetjones: Они также одинаковы с использованием console.log (проверьте, я загрузил его на сервер). Почему мне нужно смотреть на ===? If == сбой === определенно потерпел бы неудачу.
Ответ №1:
Окружающий код использует track.permalink_url
, в то время как if
блок вычисляет track.permalink.url
(что происходит всегда undefined
), поэтому это условие:
opts.startUrl == track.permalink.url
Всегда вычисляется как false
Обновление: как указывает @brianpeiris, правильным исправлением здесь было бы изменить условие на:
opts.startUrl == track.permalink_url
Комментарии:
1. Другими словами, это просто опечатка! Измените
track.permalink.url
наtrack.permalink_url
(обратите внимание на подчеркивание).2. OMFG! Я чувствую себя таким глупым сейчас. 😛 Мне потребовалась бы целая вечность, чтобы увидеть это. Спасибо!
3. @PeeHaa: Нет проблем, иногда все, что вам нужно, это еще одна пара глаз 🙂
4. @brianpeiris: Хорошая мысль, я обновлю свой ответ, чтобы прояснить исправление.
Ответ №2:
Начните печатать оба значения и посмотрите, в чем разница, в противном случае сделайте это
if (opts.startUrl.toLowerCase() == track.permalink.url.toLowerCase())