Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.08.2011, 11:11
Профессор
Посмотреть профиль Найти все сообщения от Solovei95
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 30.08.2011, 11:18
Новичок на форуме
Посмотреть профиль Найти все сообщения от Льюк
 
Регистрация: 29.08.2011
Сообщений: 6

А как вы темы создаёте, у меня не получается?
Ответить с цитированием
  #3 (permalink)  
Старый 30.08.2011, 11:36
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 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;
  }
};

вам уже об этом намекали, и я писал код, который добавляет эти свойства не к новому объекту, а к прототипу объекта. попробуйте так же
Ответить с цитированием
  #4 (permalink)  
Старый 30.08.2011, 11:44
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от Solovei95
Пересоздаю тему!
Невероятно осмысленное название для темы.

Да Вы ещё и ничему не учитесь. Прочитайте что-нибудь об объектах и прототипах в JS, что ли.
Ответить с цитированием
  #5 (permalink)  
Старый 30.08.2011, 11:52
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Solovei95,
вы почти чемпион по созданию никому не понятных тем, скоро nemo переплюнете.
Ответить с цитированием
  #6 (permalink)  
Старый 30.08.2011, 14:12
Профессор
Посмотреть профиль Найти все сообщения от Solovei95
 
Регистрация: 15.03.2011
Сообщений: 353

xDOM и DOM это совершенно разные вещи!
Умейте различать. А если все равно видите минус - то покажите правильный код!!!
Ответить с цитированием
  #7 (permalink)  
Старый 30.08.2011, 15:16
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 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.
Ответить с цитированием
  #8 (permalink)  
Старый 30.08.2011, 16:33
Профессор
Посмотреть профиль Найти все сообщения от Solovei95
 
Регистрация: 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.
Ответить с цитированием
  #9 (permalink)  
Старый 30.08.2011, 16:48
Профессор
Посмотреть профиль Найти все сообщения от Solovei95
 
Регистрация: 15.03.2011
Сообщений: 353

Я прошу пересмотреть данную функцию еще раз!
Ответить с цитированием
  #10 (permalink)  
Старый 30.08.2011, 17:57
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Так уже лучше.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не в тему но я считаю что это необходимо dmitriymar Оффтопик 5 06.04.2011 15:01
Как прижать к низу?? (даже как тему назвать не знаю) sanhai (X)HTML/CSS 4 17.08.2010 11:27
Возможно, немного не в тему. Вид тега Select parzh-junior Элементы интерфейса 8 30.04.2010 00:39