Цитата:
Можно еще то же самое, но не программно, а через аттрибут 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,
вот код страницы - не работает :( <!doctype html> <html> <head> <meta charset="utf8"> <title>Макет!</title> <script src="js/jQuery.js"></script> <script> function main() { "use strict"; var tmr; function stopMove () { clearInterval(tmr); } function startMove () { tmr = setInterval(moveBtn, 24); console.log("We START!!!"); } function moveBtn() { //Объявляй уж в одном стиле var btn = $("#btn"); var left = parseInt( btn.css("margin-Left") ) + 1; btn.css("margin-Left", left + "px"); }; return startMove; }; </script> </head> <body> <header> </header> <main> <img id="btn" src="img/button.gif"> </main> <footer> <input type='button' value='START' onclick='main()'> </footer> </body> </html> |
Цитата:
|
рони,
"Семён Сенёнович... А-а-а!" (с) :victory: А как на другую кнопку повесить функцию stopMove() ? Как из main() вернуть 2 функции? |
Keramet,
возвращайте обьект {stopMove :stopMove , startMove : startMove } тогда main().stopMove() и main().startMove() а лучше main = main() |
Цитата:
|
Keramet,
<!doctype html> <html> <head> <meta charset="utf8"> <title>Макет!</title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script> function main() { var tmr; function stopMove () { clearInterval(tmr); } function startMove () { stopMove (); tmr = setInterval(moveBtn, 24); console.log("We START!!!"); } function moveBtn() { var btn = $("#btn"); var left = parseInt( btn.css("margin-Left") ) + 1; btn.css("margin-Left", left + "px"); }; return {stopMove :stopMove , startMove : startMove } ; }; main = main() </script> </head> <body> <header> </header> <main> <img id="btn" src="img/button.gif"> </main> <footer> <input type='button' value='START' onclick='main.startMove()'> <input type='button' value='STOP' onclick='main.stopMove()'> </footer> </body> </html> |
рони,
а со stopMove() не работает почему-то. я проверил таймер tmr, пишет undefined. Может его тоже в объекте возвращать из main() ? Или лучше его из startMove() возвращать? |
Цитата:
1) перед main = main() var нужен? 2) а может лучше заменить объявление функции на функциональное выражение? (var main = function () {...} ) |
Keramet,
1 нет 2 как хочешь, можно так var main = (function () {...} )()) |
Часовой пояс GMT +3, время: 10:59. |