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

Цитата:
я думал, что вызвав функцию main и вернув из неё обработчик, он (обработчик) будет доступен (благодаря замыканию).
Можно, Рони показал как: в обработчик надо ставить результат вызова функции main.

Можно еще то же самое, но не программно, а через аттрибут onclick кнопки:
<script>
function main() {
    "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");
    };
     
    return startMove;
};
</script>
<button onclick="main()">Click me!</button>


Только не особо увлекайся с этими плясками. Если просто играешься - окей, но в продакшн старайся писать как можно проще.

Цитата:
а что не так я сделал?
Написал два фрагмента кода в разном стиле.
Да, тоже касательно этого отрывка, сразу не заметил: Function Declaration внутри блока - это уже ES6, так что в старых браузерах оно не заработает.

Последний раз редактировалось Erolast, 05.01.2016 в 09:39.
Ответить с цитированием