Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вывод баннера при выполнении условия (https://javascript.ru/forum/misc/71779-vyvod-bannera-pri-vypolnenii-usloviya.html)

DenisReva 11.12.2017 23:13

Вывод баннера при выполнении условия
 
День добрый. Подскажите, где ошибка в коде условия?

Цель:
При соответствии url выводится баннер в определенной товарной категории, в сайдбаре. То есть, к примеру если url страницы содержит директорию /zakrepochnye-mashiny, то для div с id="TestTest", менять display: none на display: block.

Код ниже выполняет замену display:none на block, но во всех категориях, то есть баннер сквозной получается

<div id="TestTest" style="display: none; background-color: #333; height: 200px">
</div>
<script>
if(window.location.pathname.indexOf('zakrepochnye-mashiny')) {
var foo = document.getElementById("TestTest");
if(foo) {
foo.style.display = 'block';
}
}
</script>

void() 12.12.2017 07:46

Ошибка в том, что блоки у вас отражаются при условии, что существует блок с ID "TestTest". А так как он, очевидно, всегда существует, то и блок будет отображаться тоже всегда.
Так будет правильнее:

<div id="TestTest" style="display: none; background-color: #333; height: 200px">
</div>
<script>
if(window.location.pathname.indexOf('zakrepochnye-mashiny')) {
var foo = document.getElementById("TestTest");
foo.style.display = 'block';
}
</script>

DenisReva 12.12.2017 08:48

Чет все равно, не хочет работать как надо

void() 12.12.2017 08:54

DenisReva,
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<div id="TestTest" style="display: none; background-color: #333; height: 200px">
</div>
<script>
if(window.location.pathname.indexOf('TestTest') > -1) {
var foo = document.getElementById("TestTest");
foo.style.display = 'block';
}
</script>

</body>
</html>

DenisReva 12.12.2017 08:56

Условие проверки наличия директории в URL всегда true, почему то

void() 12.12.2017 08:58

DenisReva,
Хм, у меня работает корректно, не получается получить такую проблему... Протестировал в Хроме и Мозилла.

DenisReva 12.12.2017 11:25

c > -1, работает) правда не понял в чем смысл, длина строки больше -1?

Dilettante_Pro 12.12.2017 12:38

DenisReva,
indexOf возвращает -1, если значение не найдено.
indexOf

DenisReva 12.12.2017 14:33

Цитата:

Сообщение от Dilettante_Pro (Сообщение 472706)
DenisReva,
indexOf возвращает -1, если значение не найдено.
indexOf

Ок


Часовой пояс GMT +3, время: 12:40.