Что то я не пойму как реализовать таймер, так в принципе пользоваться умею и 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, время: 15:20. |