Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   getElementById().style (https://javascript.ru/forum/css-html/72223-getelementbyid-style.html)

diablopc 16.01.2018 16:02

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';
}


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

Где я не прав?

Nexus 16.01.2018 16:05

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

Если условие выполняется, то возможно на странице в момент выполнения условия нет элементов с id "quickdial" и "SearchBar".

рони 16.01.2018 16:07

diablopc,
:-?

diablopc 16.01.2018 16:13

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

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

<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:20

Цитата:

Сообщение от рони (Сообщение 475364)
:-?

Да у самого уже глаза на лоб вылазят %)

Nexus 16.01.2018 16:34

Цитата:

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

не хочу вас расстраивать, но у вас в условии используется не переменная, а строка.

diablopc 16.01.2018 16:50

сс
Цитата:

но у вас в условии используется не переменная, а строка.
Это переменная, находящаясь во внешнем файле:
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')...
Весь прикол именно в стилях

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

Nexus 16.01.2018 17:06

Цитата:

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

Цитата:

Сообщение от diablopc
Причем работает она отлично.

Не буду доказывать, что "%SEARCH-ENABLED%" в функции "searchToggle" является строкой.

Если "%SEARCH-ENABLED%" действительно переменная, скиньте пару ссылок почитать о таких переменных, крайне интересно.

diablopc 16.01.2018 17:13

По сути в JS это строка, подменяемая на некое значение (в данном случае 0 или 1) внешним программным кодом.
Причем снаружи она подменяется отлично, так-же как и %IMG_BACKGROUND% может возвращать null, а может нечто типа file:///ololo.png.

Nexus 16.01.2018 17:20

Попробуйте:
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';
}


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