по клину на кнопке Вы запускаете функцию 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, время: 03:44. |