Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   prototype DOM элементов (https://javascript.ru/forum/dom-window/36026-prototype-dom-ehlementov.html)

simple 01.03.2013 16:55

prototype DOM элементов
 
3драсти, подскажите пожалуйста есть ли у дом элементов прототип и как к нему добраться, хочу добавить свои методы например в дом объект таблицы. Например делаю так:
var table = document.querySelector('TABLE');

А как дальше?

danik.js 02.03.2013 01:54

<script>
Object.defineProperty(Element.prototype, 'fadeOut', {
    enumerable: false,
    value: function() {
        this.style.opacity = window.getComputedStyle(this).opacity;
        (function(){
            (this.opacity-=.05) < 0 ? this.display = "none": setTimeout(arguments.callee.bind(this), 100)}
        ).call(this.style)
    }
});
</script>
<button onclick="this.fadeOut()">Нажми меня</button>

Старые IE в пролете.

simple 02.03.2013 13:10

это что такое?

danik.js 02.03.2013 13:16

Цитата:

Сообщение от simple
это что такое?

simple, кажется у тебя провал в памяти :)
Ты ведь вчера спрашивал про то, есть ли у DOM-элементов прототип и как его изменять.

simple 02.03.2013 14:52

ааа вспомнил...:)
нет я просто ожидал увидеть нечто привычное...DOMelem.prototype.method...т ипо такого, а тут на css что то замешано не сразу понял, чтож буду разбираться, спасибо за ответ.

danik.js 02.03.2013 14:58

Можно конечно и Element.prototype.myMethod = function(){} безусловно. Просто Object.defineProperty позволяет выставить флаг enumerable = false.
А css тут для примера. В данном случае я продемонстрировал fadeOut.
Вообще, не стоит изменять прототипы встроенных объектов. Обычно это делается только в костылях (polyfills) для исправления косяков браузеров.

nerv_ 02.03.2013 17:44

Цитата:

Сообщение от simple
это что такое?

код :D Почему так?
Цитата:

Сообщение от danik.js
enumerable: false



Часовой пояс GMT +3, время: 15:16.