powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Замыкание clearTimeout работают в IE, не работают в FF
12 сообщений из 12, страница 1 из 1
Замыкание clearTimeout работают в IE, не работают в FF
    #35567265
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть примерно такой код/
При клике на кнопке 1 функция начинает бесконечно выполняться каждые 10 милесекунд.
При клике на кнопке 2 нужно остановить выполнение этой функции:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
myObj = function(element) {
    AjaxControlExtender1.ClientBehavior1.initializeBase(this, [element]);
   
    // Указатель на setTimeout
    this._Timer = null;
}


myObj.prototype = {
    initialize: function()
    {
        // Вешаю обработчик нажатия на  1  кнопке (при клике this._movetop())
        ... this._start();

        // Вешаю обработчик нажатия на  2  кнопке (при клике this._stopmotion())
        ... this._stop();
    }

    _start : function()
    {
        // Запускаю таймер
        var me = this;
        this._Timer = window.setTimeout(function(){ me._movetop() },  10 );
    }

    _stop : function()
    {
        clearTimeout(this._Timer);
    }
}

В IE при клике на кнопке 2 выполнение _start() останабливается, а в FF нет.
Как поправить код?

Спасибо.
...
Рейтинг: 0 / 0
Замыкание clearTimeout работают в IE, не работают в FF
    #35567343
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
setTimeout вызывает функцию один раз, где тут бесконечность? или ты успеваешь нажать на Stop за 10ms? O_o
мало кода, нужно больше
...
Рейтинг: 0 / 0
Замыкание clearTimeout работают в IE, не работают в FF
    #35567353
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зыsetTimeout вызывает функцию один раз
Да, он вызывает функцию которая опять делает новый setTimeout(), который вызовет эту же функцию второй раз. При втором вызове опять будет новый setTimeout() вызывающий эту же функцию...
...
Рейтинг: 0 / 0
Замыкание clearTimeout работают в IE, не работают в FF
    #35567413
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем setInterval не нравиться?
...
Рейтинг: 0 / 0
Замыкание clearTimeout работают в IE, не работают в FF
    #35567430
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeА чем setInterval не нравиться?Только переписал - все равно не работает.
...
Рейтинг: 0 / 0
Замыкание clearTimeout работают в IE, не работают в FF
    #35567436
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напиши малюсенький примерчик в несколько строк, который не работает и запости.
...
Рейтинг: 0 / 0
Замыкание clearTimeout работают в IE, не работают в FF
    #35567462
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_BBB
Да, он вызывает функцию которая опять делает новый setTimeout(), который вызовет эту же функцию второй раз. При втором вызове опять будет новый setTimeout() вызывающий эту же функцию...
может у тебя в этих функциях проблема, или мы должны догадываться?
...
Рейтинг: 0 / 0
Замыкание clearTimeout работают в IE, не работают в FF
    #35567492
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже действительно, проблема в функциях где-то... Маленький примерчик работает и в IE и в FF:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Untitled Page</title>
    <script type="text/javascript">
    myObjj = function ()
    {
        this._Timer = null;
    }
    
    myObjj.prototype = {
        initialize : function()
        {
            //alert("asas");
        
            var but1 = document.getElementById("Button1");
            $addHandlers(
                but1,
                { 'click' : this._start },
                this);
            //but1.onclick = this._start();
            
            var but2 = document.getElementById("Button2");
            $addHandlers(
                but2,
                { 'click' : this._stop },
                this);
            //but2.onclick = this._stop();
        },
        
        _start : function()
        {
            // действия
            var div = document.getElementById("div1");
            div.innerHTML = div.innerHTML + "/";
            
            var me = this;
            this._Timer = window.setTimeout(function(){ me._start() },  10 );
        },
        
        _stop : function()
        {
            window.clearTimeout(this._Timer);
        }
    
    }
    </script>
</head>
<body>
    
    <input id="Button1" type="button" value="START" />
    <input id="Button2" type="button" value="STOP" />
    
    <div id="div1"></div>

    <script type="text/javascript">
        var meeeee = new myObjj();
        meeeee.initialize();
    </script>

</body>
</html>
...
Рейтинг: 0 / 0
Замыкание clearTimeout работают в IE, не работают в FF
    #35567512
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если реальный (большой) пример выложу, кто-нить будет смотреть? может сразу в глаза бросится
...
Рейтинг: 0 / 0
Замыкание clearTimeout работают в IE, не работают в FF
    #35567532
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так если работает маленький, зачем его выкладывать? сделай так чтобы не работал :)
...
Рейтинг: 0 / 0
Замыкание clearTimeout работают в IE, не работают в FF
    #35567578
The_ShadoW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если Ваш большой пример не работает, значит скорее всего ссылка this._Timer слетает в Вашей _movetop() куда-то влево. Соответственно, впоследствие clearTimeout(this._Timer) вычищает что-то левое (или вообще ничего), а таймер продолжает работать.

Показывайте код с отрывками функции _movetop, чтобы было понятно, как там у вас setTimeout заново делается. Если из _movetop еще глубже куда-то ползет - тоже показывайте.
Только код, релевантный таймеру. Чтоб портянку не читать.
...
Рейтинг: 0 / 0
Замыкание clearTimeout работают в IE, не работают в FF
    #35567706
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо разобрался.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Замыкание clearTimeout работают в IE, не работают в FF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]