Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Поменять выполняемые функции по смене id (https://javascript.ru/forum/dom-window/47484-pomenyat-vypolnyaemye-funkcii-po-smene-id.html)

Нубопрогер 26.05.2014 12:57

Поменять выполняемые функции по смене id
 
Имею такой код:
function open() {
document.getElementById('servers').style.display='block';
document.getElementById('start').id='finich';
}

Попытался добавить условия:
function open() {
document.getElementById('servers').style.display='block';
document.getElementById('start').id='finich';
if {id==finich} {
document.getElementById('servers').style.display='none';
} 
}


Суть в том, что по клику кнопки
<button id="start">Текст</button>

её id меняется на finich, а потом идёт условие, если id кнопки = finich, то вернуть стандартное положение div'ов на странице ( по умолчанию
document.getElementById('servers').style.display='none';

)
Дело в том, что не работает условие, функция доходит до этого условия и останавливается. Что нужно сделать, чтобы функция работала? Вот html-код данной задачи:
....
<script src="1.js"></script> <!--здесь хранится функция -->
<div id="servers">
<div id="csdm">1</div>
<div id="public">2</div>
<div id="gg">3</div>
</div>
<div id="dostype-display"><button onClick="open()" id="start">Текст</button></div>

Sweet 26.05.2014 13:11

Выражение для if берётся в круглые, а не фигурные скобки. И вообще, что за переменные id и finich сравниваются???

Нубопрогер 26.05.2014 13:16

Цитата:

Сообщение от Sweet (Сообщение 313472)
Выражение для if берётся в круглые, а не фигурные скобки. И вообще, что за переменные id и finich сравниваются???

Про скобки - не знал.
id - не переменная, а id элемента, которое поменялось

WorM32 26.05.2014 13:35

Может просто
function open() {
    document.getElementById('servers').style.display='none';
}

?

Нубопрогер 26.05.2014 13:39

это было бы чересчур банально, к тому же эта функция уже существует

я мог бы сделать так:
function openservers() {
document.getElementById('servers').style.display='block';
document.getElementById('start').style.display='none';
document.getElementById('finich').style.display='block';
}
function closeservers() {
document.getElementById('servers').style.display='none'
document.getElementById('start').style.display='block';
document.getElementById('finich').style.display='none';
};


и добавить в html
<button id="finich"></button>

но это же очень просто. Хотелось бы посложнее

Sweet 26.05.2014 13:52

Цитата:

Сообщение от Нубопрогер
id - не переменная, а id элемента, которое поменялось

С чего бы вдруг? id и finich - это либо переменные, либо свойства глобального объекта, либо свойства объекта в операторе with. Всё, больше никаких вариантов.

WorM32 26.05.2014 14:12

Цитата:

Сообщение от Нубопрогер (Сообщение 313480)
но это же очень просто. Хотелось бы посложнее

можно всю логику вынести в одну функцию и повесить на единственную кнопку. как пример:
function toggle() {
    var styleServers = document.getElementById('servers').style;
    if (styleServers.display == 'none') {
         styleServers.display = 'block';   
    } else {
        styleServers.display = 'none';
    }
}

document.getElementById('start').addEventListener('click', toggle, false);


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