Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JS не считает (https://javascript.ru/forum/misc/15490-js-ne-schitaet.html)

Detex 01.03.2011 14:58

JS не считает
 
Привет уважаемые программисты. Объясните пожалуйста где я ошибся. Дело в том, что вторая функция не хочет вычитать из переменной Opacity.
В первой функции я прибавляю к Opacity до тех пор, пока она не превысит 1, после чего завершаю функцию методом clearInterval(setIN). Тут всё ожидаемо, всё работает.

Затем запускаю вторую функцию и ничего. Вычитает только один раз до 0.9, а дальше не хочет. Если поменять - на + то прибавляет без проблем.
Вот код:
function openauthorize()
{
if(opacity>1) clearInterval(setIN);
opacity=opacity+0.1;
document.getElementById('df').innerHTML=opacity;

}

function closeauthorize()
{
opacity=opacity-0.1;// если я тут поставлю + то считает нормально
document.getElementById('df').innerHTML=opacity;
}

ksa 01.03.2011 15:03

Цитата:

Сообщение от Detex
Объясните пожалуйста где я ошибся

Например в том, что не сделал полный пример... :)

Detex 01.03.2011 15:08

Извините, не понял? Какой пример?

ksa 01.03.2011 15:08

Цитата:

Сообщение от Detex
Какой пример?

Для иллюстрации проблемы нужен полный тестовый пример... А не куски какого-то кода.

Detex 01.03.2011 15:13

Подключаемый JS
var opacity = 0;
var start = 0;
function openauthorize()
{
if(opacity>1) clearInterval(setIN);
opacity=opacity+0.1;
document.getElementById('df').innerHTML=opacity;

}

function closeauthorize()
{
opacity=opacity-0.1;
document.getElementById('df').innerHTML=opacity;
}


HTML страница
...
<div id='df'></div>
<span onClick='var setIN=setInterval(openauthorize,10)'>Плюс</span>
<span onClick='setInterval(closeauthorize,10)'>Минус</span>
...

ksa 01.03.2011 15:56

Detex, попробовал собрать твой "пример"...

<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
</style>
<script>
var opacity = 0;
var start = 0;
function openauthorize() {
	if(opacity>1) {
		clearInterval(setIN);
		return
	}
	opacity=opacity+0.1;
	document.getElementById('df').innerHTML=opacity;
}
function closeauthorize() {
	opacity=opacity-0.1;
	document.getElementById('df').innerHTML=opacity;
}
</script>
</head>
<body>
<div id='df'></div>
<span onClick='var setIN=setInterval(openauthorize,10)'>Плюс</span>
<span onClick='setInterval(closeauthorize,10)'>Минус</span>
</body>
</html>


Итог
Цитата:

setIN is not defined
[Прерывать на этой ошибке] clearInterval(setIN);
Цитата:

Сообщение от Detex
В первой функции я прибавляю к Opacity до тех пор, пока она не превысит 1, после чего завершаю функцию методом clearInterval(setIN). Тут всё ожидаемо, всё работает.

Один раз плюсануть успевает. :) Потом ошибка - см.выше...

Цитата:

Сообщение от Detex
Затем запускаю вторую функцию и ничего. Вычитает только один раз до 0.9, а дальше не хочет.

В пример минусует пока страничку не перезагрузишь... :D

Detex 01.03.2011 16:10

Ваш пример тоже не работает, но Вы навели меня на правильную мысль, а именно, видимо, в onClick нельзя объявить переменную (например: onClick(var setIN=setInterval(...))).
Я объявил её в скрипте и всё заработало. Спасибо за помощь.

dmitriymar 01.03.2011 16:46

Цитата:

Сообщение от Detex
Ваш пример тоже не работает

это вообщето твой пример до кучи собраный:yes:


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