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

Цитата:
а может лучше заменить объявление функции на функциональное выражение? (var main = function () {...} )
Лучше. Переиспользовать переменную разными сущностями - это хрень какая-то. Не надо злоупотреблять динамической типизацией.

Цитата:
onclick='main()()'
Тьфу, да, точно.

Цитата:
А как на другую кнопку повесить функцию stopMove() ? Как из main() вернуть 2 функции?
Вот ты и начал натыкаться на грабли переусложнения.
Я бы лучше сделал как-то так:
<script>
	var startMoving;
	var stopMoving;

	(function() {
		"use strict";

		var timer; //Зачем здесь сокращение?
		
		startMoving = function() {
			timer = setInterval(function moveButton() {
				var target = $("#startMovingButton");
				var offset = parseInt(target.css("margin-left")) + 1;
				target.css("margin-left", offset + "px");
			});
		}

		stopMoving = function() {
			clearInterval(timer);
		}
	})();
</script>

<button id="startMovingButton" onclick="startMoving();">Start moving</button>
<button id="stopMovingButton" onclick="stopMoving();">Stop moving</button>


А вообще-то для подобного рода инкапсуляции в JS существует система модулей - https://learn.javascript.ru/modules.

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