Пересоздаю тему!
Все темы были неудачными! Было плохое настроение!
Пробуйте теперь такой код!
(function(){
var global = (function(){return this;})();
//Image Loader
global.loadImage = function(src,onload){
var img = new Image();
img.src = src;
img.onload = onload;
return img;
};
//DOM Object
global.DOM = function(element){
var init = new xDOM(element);
return init;
};
//Init DOM
var xDOM = function(element){
var elem = element;
this.attr = function(src){
DOM.prototype.attr(elem,src);
return this;
}
this.css = function(src){
DOM.prototype.css(elem,src);
return this;
}
this.event = function(src){
DOM.prototype.event(elem,src);
return this;
}
};
//Set Attributes
DOM.prototype.attr = function(elem,src){
if(src==null){src={}}
for(var i in src){
elem.setAttribute(i,src[i]);
}
}
//Set CSS
DOM.prototype.css = function(elem,src){
if(src==null){src={}}
for(var i in src){
if(typeof elem.style.setProperty != "undefined"){
elem.style.setProperty(i,src[i],null);
} else {
elem.style.setAttribute(i,src[i]);
}
}
}
//Event Attach
DOM.prototype.event = function(elem,src){
if(src==null){src={}}
for(var i in src){
if(elem.addEventListener) {
elem.addEventListener(i, src[i], false);
} else
if(elem.attachEvent) {
elem.attachEvent('on' + i, function(e){func.call(src[i], e);});
}
}
}
})();
|
А как вы темы создаёте, у меня не получается?
|
каждый раз при вызове DOM будет создаваться новый объект (это ничего) и к нему каждый раз будут добавляться свойства (это уже плохо)
//DOM Object
global.DOM = function(element){
var init = *!*new xDOM(element);*/!*
return init;
};
//Init DOM
var xDOM = function(element){
var elem = element;
*!*this.attr*/!* = function(src){
DOM.prototype.attr(elem,src);
return this;
}
*!*this.css*/!* = function(src){
DOM.prototype.css(elem,src);
return this;
}
*!*this.event*/!* = function(src){
DOM.prototype.event(elem,src);
return this;
}
};
вам уже об этом намекали, и я писал код, который добавляет эти свойства не к новому объекту, а к прототипу объекта. попробуйте так же |
Цитата:
Да Вы ещё и ничему не учитесь. Прочитайте что-нибудь об объектах и прототипах в JS, что ли. |
Solovei95,
вы почти чемпион по созданию никому не понятных тем, скоро nemo переплюнете. |
xDOM и DOM это совершенно разные вещи!
Умейте различать. А если все равно видите минус - то покажите правильный код!!! |
Цитата:
Более того, в Вашем случае конструктор DOM будет возвращать объект "типа" xDOM. А правильно так:
// DOM cons
var DOM = function(element){
this._element = element;
};
DOM.prototype = {
attr : function(attr){return this._element.getAttribute(attr)}
// …
};
global.DOM = DOM;
|
Да понял я вас!
Вот еще вариант!
(function(){
var global = (function(){return this;})();
//Image Loader
global.loadImage = function(src,onload){
var img = new Image();
img.src = src;
img.onload = onload;
return img;
};
var xDOM = function(elem){
var init = new DOM(elem);
return init;
}
//DOM Object
var DOM = function(element){
this._elem = element;
};
//Set Attributes
DOM.prototype.attr = function(src){
if(src==null){src={}}
for(var i in src){
this._elem.setAttribute(i,src[i]);
}
return this;
}
//Set CSS
DOM.prototype.css = function(src){
if(src==null){src={}}
for(var i in src){
if(typeof this._elem.style.setProperty != "undefined"){
this._elem.style.setProperty(i,src[i],null);
} else {
this._elem.style.setAttribute(i,src[i]);
}
}
return this;
}
//Event Attach
DOM.prototype.event = function(src){
if(src==null){src={}}
var self = this;
for(var i in src){
(function(i){
if(self._elem.addEventListener) {
self._elem.addEventListener(i, src[i], false);
} else
if(self._elem.attachEvent) {
self._elem.attachEvent('on' + i, function(e){ src[i].call(self._elem, e); });
}
})(i);
}
return this;
}
global.DOM = xDOM;
})();
|
Я прошу пересмотреть данную функцию еще раз!
|
Так уже лучше.
|
| Часовой пояс GMT +3, время: 08:38. |