Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.01.2018, 16:02
Интересующийся
Отправить личное сообщение для diablopc Посмотреть профиль Найти все сообщения от diablopc
 
Регистрация: 16.01.2018
Сообщений: 12

getElementById().style
Приветствую.
Есть задача менять куски оформления js'ом
Вроди задача тривиальная, но толи лыжи не едут, толи я *****.....

Чего есть:
Код:
#SearchBar {
    width: 100%;
    height: 40px;
    max-height: 40px;
/* еще куча бла-бла-бла */
}
if ("%SEARCH-ENABLED%" == '1') {
    document.getElementById('quickdial').style.margin = '10px auto';
    document.getElementById('SearchBar').style.width = '40px';
}


Реакции - 0.

Пихаю туда alert () - работает.

Что еще интересно:
Рядом есть вот это:
if ("%IMG_BACKGROUND%" == '') {
    document.getElementById("html").style.background = 'url("qrc:html/bg.svg")';
    document.getElementById("html").style.backgroundSize = 'cover';
}


Этот кусок работает О_О

Где я не прав?
Ответить с цитированием
  #2 (permalink)  
Старый 16.01.2018, 16:05
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,705

Шаблонизатор под js какой-то используется что-ли?

Если условие выполняется, то возможно на странице в момент выполнения условия нет элементов с id "quickdial" и "SearchBar".
Ответить с цитированием
  #3 (permalink)  
Старый 16.01.2018, 16:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

diablopc,
Ответить с цитированием
  #4 (permalink)  
Старый 16.01.2018, 16:13
Интересующийся
Отправить личное сообщение для diablopc Посмотреть профиль Найти все сообщения от diablopc
 
Регистрация: 16.01.2018
Сообщений: 12

Да страница чуть-ли не статическая....

там-же, чуть ниже:

<div class="SearchBar" id="SearchBar">
    <div id="SearchBarToggle" onClick="searchToggle()">
    </div>
</div>
<div id="quickdial">
</div>


searchToggle() переключает переменную %SEARCH-ENABLED% и делает location.reload()

Последний раз редактировалось diablopc, 16.01.2018 в 16:16.
Ответить с цитированием
  #5 (permalink)  
Старый 16.01.2018, 16:20
Интересующийся
Отправить личное сообщение для diablopc Посмотреть профиль Найти все сообщения от diablopc
 
Регистрация: 16.01.2018
Сообщений: 12

Сообщение от рони Посмотреть сообщение
Да у самого уже глаза на лоб вылазят %)
Ответить с цитированием
  #6 (permalink)  
Старый 16.01.2018, 16:34
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,705

Сообщение от diablopc
searchToggle() переключает переменную %SEARCH-ENABLED% и делает location.reload()
не хочу вас расстраивать, но у вас в условии используется не переменная, а строка.
Ответить с цитированием
  #7 (permalink)  
Старый 16.01.2018, 16:50
Интересующийся
Отправить личное сообщение для diablopc Посмотреть профиль Найти все сообщения от diablopc
 
Регистрация: 16.01.2018
Сообщений: 12

сс
Цитата:
но у вас в условии используется не переменная, а строка.
Это переменная, находящаясь во внешнем файле:
function searchToggle() {
    if ("%SEARCH-ENABLED%" == '1') {
        external.speedDial.setsearchEnabled(false);
    } else {
        external.speedDial.setsearchEnabled(true);
    };
    location.reload();
}


Которая возвращается вот этим:
Код:
searchEnabled = settings.value("searchEnabled", true).toBool();
.........
page.replace(QLatin1String("%SEARCH-ENABLED%"), QString::number(dial->searchEnabled()));
Причем работает она отлично.
Если на страницу вставить <div>%SEARCH-ENABLED%</div>, то по searchToggle() оно переключается (Показывая посреди страницы или '0' или '1')...
Весь прикол именно в стилях

Зы
Ну да, логично, здесь это строка =)
...только ее содержание меняется))

Последний раз редактировалось diablopc, 16.01.2018 в 17:02.
Ответить с цитированием
  #8 (permalink)  
Старый 16.01.2018, 17:06
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,705

Сообщение от diablopc Посмотреть сообщение
]Это переменная, находящаясь во внешнем файле:
function searchToggle() {
    if ("%SEARCH-ENABLED%" == '1') {
        external.speedDial.setsearchEnabled(false);
    } else {
        external.speedDial.setsearchEnabled(true);
    };
    location.reload();
}
Сообщение от diablopc
Причем работает она отлично.
Не буду доказывать, что "%SEARCH-ENABLED%" в функции "searchToggle" является строкой.

Если "%SEARCH-ENABLED%" действительно переменная, скиньте пару ссылок почитать о таких переменных, крайне интересно.
Ответить с цитированием
  #9 (permalink)  
Старый 16.01.2018, 17:13
Интересующийся
Отправить личное сообщение для diablopc Посмотреть профиль Найти все сообщения от diablopc
 
Регистрация: 16.01.2018
Сообщений: 12

По сути в JS это строка, подменяемая на некое значение (в данном случае 0 или 1) внешним программным кодом.
Причем снаружи она подменяется отлично, так-же как и %IMG_BACKGROUND% может возвращать null, а может нечто типа file:///ololo.png.
Ответить с цитированием
  #10 (permalink)  
Старый 16.01.2018, 17:20
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,705

Попробуйте:
if ("%SEARCH-ENABLED%" == '1') {
	if(!document.getElementById('quickdial'))
		alert('quickdial нет на странице');
		
	if(!document.getElementById('SearchBar'))
		alert('quickdial нет на странице');
		
    document.getElementById('quickdial').style.margin = '10px auto';
    document.getElementById('SearchBar').style.width = '40px';
}
Ответить с цитированием
Ответ



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

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