Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Зажимающаяся кнопка (https://javascript.ru/forum/dom-window/10134-zazhimayushhayasya-knopka.html)

Darth Padla 21.06.2010 07:24

Зажимающаяся кнопка
 
Нужна зажимающаяся кнопка.
Вот такой код работает только один раз
<script>
function press(){
	if(pressed==1){
		pressed=0;
		document.getElementById('butt').style.backgroundColor="#B4BDB9";
		/*Тут еще код,который не виноват*/
	}else{
		pressed=1;
		document.getElementById('bold').style.backgroundColor="#939c93";
		/*Тут еще код,который не виноват*/
	}
}
</script>

Кнопка:
<div id="butt" style="background-color:#B4BDB9;"><img onclick="press();" src="../pics/pic1.png"></div>

То есть зажимается она на ура,а вот отжиматься не хочет. Кстати вот так
<script>
pressed=0;
function press(){
        alert('');
	if(pressed==1){
		pressed=0;
		document.getElementById('butt').style.backgroundColor="#B4BDB9";
		/*Тут еще код,который не виноват*/
	}else{
		pressed=1;
		document.getElementById('bold').style.backgroundColor="#939c93";
		/*Тут еще код,который не виноват*/
	}
}
</script>

и вот так
function press(){
        alert('');
	if(pressed==1){
		pressed=0;
		document.getElementById('butt').style.backgroundColor="#B4BDB9";
		/*Тут еще код,который не виноват*/
	}
       if(pressed==0){
		pressed=1;
		document.getElementById('bold').style.backgroundColor="#939c93";
		/*Тут еще код,который не виноват*/
	}
}

алерт в функции не срабатывает.

exec 21.06.2010 07:34

Переменная pressed где-нибудь до этого кода присвоена? Если нет, то вернёт ReferenceError. Да и делать лучше так:

var pressed = true;
function press() {
pressed = !pressed;
if (pressed) {…} else {…}
}

Darth Padla 21.06.2010 07:52

Переменная pressed не встречается.Я,собственно,в сь остальной код убрал пока. Попробовал эту конструкцию,эффект нулевой
var pressed = true;
function press() {
alert('этот алерт не срабатывает')
pressed = !pressed;
if (pressed) {…} else {…}
}

exec 21.06.2010 08:18

<html>
	<head>
	</head>
	<body>
		<div id="x" style="width: 50px; height: 50px; background: #B4BDB9">
		</div>
		<a href="javascript://" onclick="press();">
			Сменить цвет
		</a>
		<script type="text/javascript">
		var pressed = false;
		function press() {
			pressed = !pressed;
			document.getElementById('x').style.backgroundColor = pressed ? '#939c93': '#B4BDB9';
		}
		</script>
	</body>

</html>

Darth Padla 21.06.2010 08:31

Большое спасибо,заработало. У меня возник маленький вопросик - в моем скрипте
функция,переменная и ид назывались одинаково. Переименовал - заработало. Можно ли так делать и почему нет?

exec 21.06.2010 10:01

Darth Padla, браузер создаёт для каждого ID свою глобальную переменную (FF — исключение), с этим могли быть проблемы.


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