30.08.2011, 11:11
|
Профессор
|
|
Регистрация: 15.03.2011
Сообщений: 353
|
|
Пересоздаю тему!
Все темы были неудачными! Было плохое настроение!
Пробуйте теперь такой код!
(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);});
}
}
}
})();
Последний раз редактировалось Solovei95, 30.08.2011 в 11:17.
|
|
30.08.2011, 11:18
|
Новичок на форуме
|
|
Регистрация: 29.08.2011
Сообщений: 6
|
|
А как вы темы создаёте, у меня не получается?
|
|
30.08.2011, 11:36
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
каждый раз при вызове 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;
}
};
вам уже об этом намекали, и я писал код, который добавляет эти свойства не к новому объекту, а к прототипу объекта. попробуйте так же
|
|
30.08.2011, 11:44
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
Сообщение от Solovei95
|
Пересоздаю тему!
|
Невероятно осмысленное название для темы.
Да Вы ещё и ничему не учитесь. Прочитайте что-нибудь об объектах и прототипах в JS, что ли.
|
|
30.08.2011, 11:52
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Solovei95,
вы почти чемпион по созданию никому не понятных тем, скоро nemo переплюнете.
|
|
30.08.2011, 14:12
|
Профессор
|
|
Регистрация: 15.03.2011
Сообщений: 353
|
|
xDOM и DOM это совершенно разные вещи!
Умейте различать. А если все равно видите минус - то покажите правильный код!!!
|
|
30.08.2011, 15:16
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
Сообщение от Solovei95
|
xDOM и DOM это совершенно разные вещи!
|
И что с того? Свойства-то Вы назначаете в конструкторе xDOM, чей экземпляр и создаете.
Более того, в Вашем случае конструктор DOM будет возвращать объект "типа" xDOM.
А правильно так:
// DOM cons
var DOM = function(element){
this._element = element;
};
DOM.prototype = {
attr : function(attr){return this._element.getAttribute(attr)}
// …
};
global.DOM = DOM;
Последний раз редактировалось B@rmaley.e><e, 30.08.2011 в 15:19.
|
|
30.08.2011, 16:33
|
Профессор
|
|
Регистрация: 15.03.2011
Сообщений: 353
|
|
Да понял я вас!
Вот еще вариант!
(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;
})();
Последний раз редактировалось Solovei95, 30.08.2011 в 16:48.
|
|
30.08.2011, 16:48
|
Профессор
|
|
Регистрация: 15.03.2011
Сообщений: 353
|
|
Я прошу пересмотреть данную функцию еще раз!
|
|
30.08.2011, 17:57
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
Так уже лучше.
|
|
|
|