02.09.2017, 10:29
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
Не срабатывает условие
Здравствуйте! Подскажите, пожалуйста, почему не срабатывают условия. Есть скрипт определяющий разрешение экрана, его результат записываю в переменную, а потом создаю условия. Вот так работает:
$width='<script>var ScreenWidth = screen.width; document.write(ScreenWidth);</script>';
if ($width = 1280) {
echo "Да";
}else{
echo "Нет";
}
, если же указываю диапазон, то нет:
$width='<script>var ScreenWidth = screen.width; document.write(ScreenWidth);</script>';
if ($width >= 1280 && $width <= 1440) {
echo "Да";
}else{
echo "Нет";
}
. подскажите, пожалуйста, почему такое происходит?
|
|
02.09.2017, 10:57
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
А первый "работает" потому, что отвечает "Да", поэтому вы заключаете, что код рабочий?
|
|
02.09.2017, 11:22
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
Да, а разве нет?
Последний раз редактировалось Sonya, 02.09.2017 в 11:36.
Причина: Добавлено
|
|
02.09.2017, 12:11
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Sonya
|
а разве нет?
|
А вы как думаете?
'<script>var ScreenWidth = screen.width; document.write(ScreenWidth);</script>' - для браузера это JS код, который может быть выполнен, если его вывести в браузер, чего у вас нет и для РНР, это просто строка. Но даже будучи выведенным в браузер результат его работы не будет доступен серверному языку.
В первом случае вы будете всегда получать "Да", так как в условии вы не проверяете на равенство, а переназначаете значение этой переменной на 1280:
if ($width = 1280)
булево значение которой конечно же возвратит true, вот отсюда и "Да", и "ура, работает". Если же написать условие правильно:
if ($width == 1280)
то конечно же будет "Нет", так как строковое значение $width не равно 1280, оно же не будет соответствовать и $width >= 1280 && $width <= 1440.
Последний раз редактировалось laimas, 02.09.2017 в 12:17.
|
|
02.09.2017, 12:21
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
Что посоветуете? Сначала передать значение на сервер, и уже потом его использовать?
|
|
02.09.2017, 12:23
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
Или использовать JS, дописав скрипт?
|
|
02.09.2017, 12:25
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Sonya
|
Сначала передать значение на сервер, и уже потом его использовать?
|
Вот тут я не знаю, это зависит от того, чего требуется. Если это некое отображение содержания зависящее от разрешения, то этим должен заниматься клиент - либо JS, либо CSS.
Если же серверу нужно принять некое решение зависящее от разрешения, то первый запрос пользователя, это ради получить его разрешение, после чего обновление/переход на код использующий его.
|
|
02.09.2017, 12:37
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
Да, это отображение содержания зависящее от разрешения. Есть код таймера:
jQuery(document).ready(function() {
jQuery(".eTimer").eTimer({
etType: 0, etDate: "03.09.2017.0.0", etTitleText: "До окончания акции осталось:", etTitleSize: 20, etShowSign: 1, etSep: ":", etFontFamily: "Trebuchet MS", etTextColor: "#a3a3a3", etPaddingTB: 15, etPaddingLR: 15, etBackground: "#333333", etBorderSize: 0, etBorderRadius: 2, etBorderColor: "white", etShadow: " 0px 0px 10px 0px #333333", etLastUnit: 4, etNumberFontFamily: "Impact", etNumberSize: 35, etNumberColor: "white", etNumberPaddingTB: 0, etNumberPaddingLR: 8, etNumberBackground: "#11abb0", etNumberBorderSize: 0, etNumberBorderRadius: 5, etNumberBorderColor: "white", etNumberShadow: "inset 0px 0px 10px 0px rgba(0, 0, 0, 0.5)"
});
});
надо, чтобы значение etNumberSize было в зависимости от разрешения экрана. Можно было бы это значение выводить как разрешение деленное на 10 с получением целого числа и подставлять в значение etNumberSize.
|
|
02.09.2017, 12:48
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Ну так и пишите в этом js-коде:
..., etNumberSize: (screen.width/10).toFixed(), ....
|
|
02.09.2017, 12:53
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
Спасибо большое!
|
|
|
|