Показать сообщение отдельно
  #1 (permalink)  
Старый 17.12.2014, 21:26
Аватар для SmilingDog
Новичок на форуме
Отправить личное сообщение для SmilingDog Посмотреть профиль Найти все сообщения от SmilingDog
 
Регистрация: 07.11.2014
Сообщений: 8

Анимация залипания кнопки
Мучаюсь с анимацией нажатия на кнопку . По-идее код устанавливает callback и при нажатии на кнопку
а) Задает стиль кнопки opacity:0.5
б) Удаляет сам коллбек с кнопки . (Чтобы предотвратить повторное нажатие).
в) Исполняет некую полезную функцию
г) После ее окончания восстанавливает коллбек и opacity:1;
По непонятной с моей колоколенки причине анимация кнопки либо
а) Не работает
б) Работает deactivate , если закоментить последующий activate внутри коллбека .
в) Самое странное . Если раскоментить alert'ы внутри функций то все работает как надо .
Милостивые государи , помогите мне понять сию мистификацию .
Собственно вот код .
<html>
<head>
	<link rel="stylesheet" type="text/css" href="style.css"></head>
<body>
	<a id="btn" class="sbutton">Кнопка</a>
	<script src="knopka.js"></script>
</body>
</html>


style.css
.sbutton {
    background: #cb3131; /* Цвет фона */
    padding: 10px 5px; /* Поля вокруг текста */
    margin: 0px;
	font-size:14px;
	font-weight:600;
    color: #FFFFFF; /* Цвет шрифта */
    text-align: center; /* Надпись на кнопке по центру */
    border: solid 0px #73C8F0; /* Параметры рамки кнопки */
    cursor: pointer; /* Изменение вида курсора при наведении*/
	border-radius: 5px;
	overflow:hidden;
	opacity : 1;
}


и knopka.js
function removeBtnCallback() {
	var p = document.getElementById("btn");
	if(p) 
		p.removeEventListener("click", btnCallback);

	p.style.opacity = 0.5;
	//alert("removeBtnCallback");
}

function addBtnCallback() {
	var btn = document.getElementById("btn");	
	if(btn) 
		btn.addEventListener("click", btnCallback , false);
	
	
	btn.style.opacity = 1;
	//alert("addBtnCallback");
}

function btnCallback() {
	removeBtnCallback();
	__sleep(5000);
	addBtnCallback();	
}
	
function __sleep(ms) {
	//alert("sleep");
	ms += new Date().getTime();
	while (new Date() < ms){}
} 

addBtnCallback();
Ответить с цитированием