Показать сообщение отдельно
  #19 (permalink)  
Старый 04.01.2016, 23:06
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
не определять в глобальном контексте, а сделать это внутри функции (в данном случае main), которая запуститься как только броузер построит ДОМ ))
Зачем?
Если определить функции внутри другой функции, то они только в ней видны и будут. Обработчики событий на элементах выполняются в глобальной контексте, и, соответственно, ни о каких stopMove и startMove они знать в принципе не могут.

Так что либо навешивай обработчик программно внутри функции main:
var main = function() {
    "use strict";
    var tmr;
    function stopMove ()    { clearInterval(tmr); }
    function startMove ()   { tmr = setInterval(moveBtn, 24); }
     
    function moveBtn() { //Объявляй уж в одном стиле
        var btn = $("#btn");
        var left = parseInt( btn.css("margin-Left") ) + 1;
        btn.css("margin-Left", left + "px");
    };
    
    $("#btn").on("click", startMove);
};
$(document).ready(main);


Либо объявляй функции глобально.

Последний раз редактировалось Erolast, 04.01.2016 в 23:08.
Ответить с цитированием