Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Можно ли "повесить" внутренние функции на кнопки? (https://javascript.ru/forum/misc/60517-mozhno-li-povesit-vnutrennie-funkcii-na-knopki.html)

Keramet 04.01.2016 20:59

Можно ли "повесить" внутренние функции на кнопки?
 
Всем привет!
Вопрос такой: вот есть ДжС файл, который просто передвигает кнопку (типа анимация :write: ). Хочу нажать на кнопку, и она начинает двигаться. За начало "движения" отвечает функция start() Как задать её обработчику onclick на HTML странице?
Так не работает:
<input type='button' id="btn" onclick='startMove()'>

var main = function () {
	"use strict";
	var tmr;
	function stopMove ()    { clearInterval(tmr); }
	function startMove ()	{ tmr = setInterval(moveBtn, 24); }
	
	var moveBtn = function () {
		var btn = $("#btn");
		var left = parseInt( btn.css("margin-Left") ) + 1;
		btn.css("margin-Left", left + "px");
	};
	return startMove;
};
$(document).ready(main);

рони 04.01.2016 21:13

Keramet,
на всякий случай start плохое имя для функции.

Keramet 04.01.2016 21:17

startMove подойдёт? :agree: Исправил.

Keramet 04.01.2016 21:19

рони,
Исправление start() на startMove() не помогло :dance: шутка :)

рони 04.01.2016 21:25

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 a;
     $(function(){
     var main = function () {
	"use strict";
	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");
	};
	return st;
};
  // a = main()
   $("#btn").on({click : main()})
});


  </script>
</head>

<body>
<input type='button' id="btn"  value="click">
<!--<input type='button' id="btn" onclick='a()'>-->



</body>

</html>

Keramet 04.01.2016 21:30

рони,
У вас // a = main() вместо моего $(document).ready(main);?

Keramet 04.01.2016 21:32

или конструкция $(function(){.... то же, что и $(document).ready(main); ?

Keramet 04.01.2016 21:37

а где сам вызов st() из строки 18:
function st()   { tmr = setInterval(moveBtn, 24); }

и не совсем понял, зачем
$("#btn").on({click : main()})

мы ж на кнопку должны вроде повесить st() ?

рони 04.01.2016 21:42

Цитата:

Сообщение от Keramet
или конструкция $(function(){.... то же, что и $(document).ready(main); ?

да
Цитата:

Сообщение от Keramet
$("#btn").on({click : main()})

мы ж на кнопку должны вроде повесить st() ?

это и устанавливает обработчик или раскоментируйте строки а эту строку уберите.

рони 04.01.2016 21:44

Цитата:

Сообщение от Keramet
У вас // a = main() вместо моего $(document).ready(main);?

логику вашего варианта я не осилил, поэтому предложил два варианта на выбор.


Часовой пояс GMT +3, время: 03:20.