Для управления элементом Objs использует состояния. Состояние - это информация о том, как создать или изменить элемент. Для создания элемента используйте состояние render с атрибутами тега и html (внутренний HTML).
// состояние для создания элемента - render
const timerStates = {
render: {
tag: 'div',
class: 'timer',
html: 'Секунды: <span>0</span>',
}
}
Тег по умолчанию - div, поэтому можно не указывать. Аттрибуты dataset и style могут быть типа object. Также, render может быть строкой вида:
'<div class="timer">Секунды: <span>0</span></div>'.
Затем добавим новое состояние, которое начнет отсчёт. Число будет храниться в самом объекте - объекте self. Таким образом, состояние будет функцией, которая получает self, создает переменную, увеличивает её на интервал и отображает как innerHTML из span.
// новый объект состояний для таймера
const timerStates = {
render: {
class: 'timer',
html: 'Секунды: <span>0</span> ',
},
start: ({self}) => {
// сохранить число или установить
self.n = self.n || 0;
// запустить интервал
setInterval(() => {
self.n++;
o(self).first('span').html(self.n);
}, 1000);
}
}
Состояния сделаны, и последнее, что нужно сделать, это создать и добавить элемент на страницу. Для этого - инициализировать состояния, создать элемент через render, запустить таймер и добавить его на страницу:
o.init(timerStates).render().start().appendInside('#simpleTimer');
Например, здесь:
Ниже приведены более сложные примеры, но с той же логикой: создание состояний, некоторые функции, которые изменяют элемент, затем инициализируют и добавляют элементы на странице. Состояния после инициализации являются методами self в дополнение к стандартным on, first, remove и т.д.