по клину на кнопке Вы запускаете функцию main, это вроде понятно. Я просто не пойму, где происходит вызов st(). Ведь внутри main она не вызывается, только определяется.
|
моя логика была такая: вот эти строки
var tmr; function stopMove () { clearInterval(tmr); } function startMove () { tmr = setInterval(moveBtn, 24); } не определять в глобальном контексте, а сделать это внутри функции (в данном случае main), которая запуститься как только броузер построит ДОМ )) |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
смотрите ранее что возвращает main => return st; |
рони,
а, теперь вроде догоняю)) |
Keramet,
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script> var main = function () { var tmr; function stop() { clearInterval(tmr); } function st() { tmr = setInterval(moveBtn, 24); } var moveBtn = function () { var btn = $("#btn"); var left = parseInt( btn.css("margin-Left") ) + 1; btn.css("margin-Left", left + "px"); }; st() return st; }; $(main); </script> </head> <body> <input type='button' id="btn" value="click"> </body> </html> |
Цитата:
Если определить функции внутри другой функции, то они только в ней видны и будут. Обработчики событий на элементах выполняются в глобальной контексте, и, соответственно, ни о каких 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); Либо объявляй функции глобально. |
Цитата:
Цитата:
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 04:33. |