Показать сообщение отдельно
  #7 (permalink)  
Старый 02.12.2016, 00:23
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от 23keks23
Но что если я хочу передать класс элемента, а этих элементов будет несколько
<div id="test"></div>
<div id="test2"></div>
<script>
function MyTest(tag) {
    var self = this instanceof MyTest
        ? this
        : Object.create(MyTest.prototype);
    self.init.apply(self, arguments);
    return self;
}
MyTest.prototype = {
    init: function (tag) {
        if (tag && typeof tag === 'string') {
            var self = this;
            this._element = document.querySelector(tag);
            if (!this._element) {
                throw Error("MyTest: element with this tag isn't found");
            }
            this._element.addEventListener('click', function () {
                if(typeof self._callback === 'function') self._callback(self.value);
            });
        } else {
            throw Error("MyTest: tag is not string");
        }
    },
    get value() {
        return this._value;
    },
    set value(value) {
        this._value = value;
        this._element.innerHTML = value;
    },
    onclick: function (callback) {
        this._callback = callback;
    }
};
// Используем
var foo = MyTest('#test');
foo.value = 555;
foo.onclick(function (value) {
    alert(value);
});
var foo2 = MyTest('#test2');
foo2.value = 777;
foo2.onclick(function (value) {
    alert(value);
});
</script>
Ответить с цитированием