Pergi ke kandungan

Pengguna:Kurniasan/ez.js

Daripada Wikipedia, ensiklopedia bebas.

Catatan: Selepas diterbitkan, anda mungkin perlu memintas cache pelayar web untuk melihat perubahan.

  • Firefox / Safari: Tahan Shift sambil klik Reload, atau tekan sama ada Ctrl-F5 atau Ctrl-R (⌘-R pada Mac)
  • Google Chrome: Tekan Ctrl-Shift-R (⌘-Shift-R pada Mac)
  • Edge: Tahan Ctrl sambil tekan Refresh, atau tekan Ctrl-F5.
var ez = function(s, attr, ch) {
    return new ez.Dom(s, attr, ch);
}

ez.Dom = function(s, attr, ch) {
    this.__init__(s, attr, ch);
}

ez.Dom.prototype = {
    __init__ : function(s, attr, ch) {
        if (!s.match(/^[a-z].*$/i))
            throw new Error('Invalid selector');
        var tag = s.split(/[.#[{]/,1)[0];
        if ((this.element = e = document.createElement(tag)) instanceof HTMLUnknownElement)
            throw new Error('Unrecognized HTML tag: ' + tag);
        if (m = s.match(/[.#][\w-]+/g)) {
            for (i=0;i<m.length;i++) {
                if (m[i][0] == '#')
                    e.id = m[i].slice(1);
                else if (m[i][0] == '.')
                    e.classList.add(m[i].slice(1));
                console.log(m[i]);
            }
        }
        if (attr !== undefined) {
            for (a in attr)
                e.setAttribute(a, attr[a]);
        }
        if (m = s.match(/\{([^}]+)\}$/))
            e.innerHTML = m[1];
        if (ch !== undefined)
            this._handleChildren(ch);
        return this;
    },
    _handleChildren : function(ch) {
        if (ch instanceof ez.Dom)
            this.element.appendChild(ch.element);
        else if (ch instanceof Array) {
            for (i=0; i<ch.length;i++) {
                c = ch[i];
                this._handleChildren(c);
            }
        } else if (typeof(ch) == 'string' || typeof(ch) == 'number') {
        	var dom = document.createTextNode(ch);
        	this.element.appendChild(dom);
        }
    }
}