Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.09.2017, 10:29
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 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 "Нет";
     }
. подскажите, пожалуйста, почему такое происходит?
Ответить с цитированием
  #2 (permalink)  
Старый 02.09.2017, 10:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А первый "работает" потому, что отвечает "Да", поэтому вы заключаете, что код рабочий?
Ответить с цитированием
  #3 (permalink)  
Старый 02.09.2017, 11:22
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

Да, а разве нет?

Последний раз редактировалось Sonya, 02.09.2017 в 11:36. Причина: Добавлено
Ответить с цитированием
  #4 (permalink)  
Старый 02.09.2017, 12:11
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 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.
Ответить с цитированием
  #5 (permalink)  
Старый 02.09.2017, 12:21
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

Что посоветуете? Сначала передать значение на сервер, и уже потом его использовать?
Ответить с цитированием
  #6 (permalink)  
Старый 02.09.2017, 12:23
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

Или использовать JS, дописав скрипт?
Ответить с цитированием
  #7 (permalink)  
Старый 02.09.2017, 12:25
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Sonya
Сначала передать значение на сервер, и уже потом его использовать?
Вот тут я не знаю, это зависит от того, чего требуется. Если это некое отображение содержания зависящее от разрешения, то этим должен заниматься клиент - либо JS, либо CSS.

Если же серверу нужно принять некое решение зависящее от разрешения, то первый запрос пользователя, это ради получить его разрешение, после чего обновление/переход на код использующий его.
Ответить с цитированием
  #8 (permalink)  
Старый 02.09.2017, 12:37
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 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.
Ответить с цитированием
  #9 (permalink)  
Старый 02.09.2017, 12:48
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Ну так и пишите в этом js-коде:

..., etNumberSize: (screen.width/10).toFixed(), ....
Ответить с цитированием
  #10 (permalink)  
Старый 02.09.2017, 12:53
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

Спасибо большое!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймер срабатывает раньше времени или вообще не срабатывает Terebonko Элементы интерфейса 6 03.08.2017 12:43
Не выполняется условие if cooldanie Общие вопросы Javascript 12 17.01.2014 01:01
AJAX запрос в Internet Explorer срабатывает через раз nikolayseo jQuery 5 13.11.2012 00:13
Нажатие по дате в календаре срабатывает только со второго клика afr0 Events/DOM/Window 4 31.10.2012 13:39
Не срабатывает условие AkeLLbl4 Events/DOM/Window 10 20.04.2011 21:13