Что то я не пойму как реализовать таймер, так в принципе пользоваться умею и setTimeout и setInterval и clearIterval
Но вот, думаю какой код делать Такой ? $.timer(50,function(){i++}).start(); Если такой, то как start определить, она же должна будет вызывать функцию setInterval, тогда её нужно будет иметь доступ к аргументам в timer, т.е. к 50 и function(){i++}, и к тому , чтобы её потом можно было остановить, нужно присвоить значение т.е. timer1=setIneterval(function(){i++},50); И откуда этот timer1 , и делать ли его глобальным? Или вот такой код? $('timer1').timer(50,function(){i++}); Но в этом случае придётся вообще весь получившийся framework (хотя он маленький пока) переделывать. Поэтому отпадает. и как вообще определять start() ? Должен ли он значения какие нибудь принмать, и должен ли возвращать как и другие себя следующим образом return this; Посмотрел как в js-core сделано, пока не догоняю ))) Хотя на вид вроде просто. Главный вопрос, как потом из start() получить данные переданные в timer(50,function(){i++})???? |
$.timer такой же конструктор, как и $, функция и параметры запоминаются в свойствах нового объекта, а метод start находится в прототипе $.timer, поэтому имеет доступ к свойствам объекта по ссылке this.
|
Ух вроде просто )) , буду пробовать, если честно я наверное не совсем к
ООП в js привык ). |
Попробовал немного другой способ, и он вроде даже лучше и проще для понимания, можете оценить
<script> function $$(id) { switch (typeof id) { case "object": return id; break; case "string": if(id.search("#")!=-1) { var referenceId=id.replace("#",""); var element=document.getElementById(referenceId); if(element){return element;} else {alert("Данного элемента не существует.\ndocument.getElementById(referenceId) вернула\n"+element);} } else {alert("Элемент надо указывать так:#id");} break; case "function": alert("function"); break; default: alert("Этот тип не поддерживается"); } } function $(id) { this.id=id; this.cout=cout; this.onready=onready; return this; } function cout(text){$$(id).innerHTML=text;}; function onready(toMake) { switch (typeof toMake) { case "function": window.onload = toMake; break; case "string": window.onload = function(){eval(toMake);} break; default: alert("Ошибка в функции onready:Этот тип не поддерживается\n"); } } $.alert = function(text){ alert(text);} $(document).onready("$('#test').cout('Привет');"); $.alert("Привет"); </script> <html> <head> <title> Классы </title> </head> <body> <div id="test"></div> <button onclick="$('#test').cout('Ух ты');">Нажать</button> </body> </html> |
Чем лучше?
Умножать матрицы не хочешь, в прототипах разбираться не хочешь… может забить тогда на все и не мучаться?) |
Цитата:
Код:
|
Часовой пояс GMT +3, время: 04:06. |