Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 25.08.2011, 16:44
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Ну да, все-таки копирование - не наследование.. неверно выразился
Ответить с цитированием
  #12 (permalink)  
Старый 25.08.2011, 17:03
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Object.updateTree = function updateTree(obj, src) {
	if (obj == null) {
		obj = {};
	}
	for (var key in src) {
		if (typeof obj[key] == 'object' && typeof src[key] == 'object') {
			updateTree(obj[key], src[key]);
		} else {
			obj[key] = src[key];
		}
	}
	return obj;
};

var elem = Object.updateTree(document.createElement('div'), {
	style: {
		fontSize: '200%',
		cursor: 'pointer'
	},
	onclick: function() { alert('click!'); },
	innerHTML: 'click me'
});

document.body.appendChild(elem);

Последний раз редактировалось Riim, 25.08.2011 в 17:06.
Ответить с цитированием
  #13 (permalink)  
Старый 26.08.2011, 06:47
Профессор
Посмотреть профиль Найти все сообщения от Solovei95
 
Регистрация: 15.03.2011
Сообщений: 353

Ну и секреты у вас!
Но вы тупо используете свойство:
elem[attr] = prop[attr];

Где:
attr - это сам атрибут
elem - элемент
prop - своство атрибута элемента

Последний раз редактировалось Solovei95, 26.08.2011 в 06:49.
Ответить с цитированием
  #14 (permalink)  
Старый 26.08.2011, 07:12
Профессор
Посмотреть профиль Найти все сообщения от Solovei95
 
Регистрация: 15.03.2011
Сообщений: 353

Оказывает у вас мозга больше!
Но вот мой вариант.
Object.mix = function(obj,attr){
  if(obj==null){obj={}}
  if(attr==null){attr={}}

  for(var i in attr){
    obj[i] = attr[i];
  }
}


Но:

Object.mix = function(obj,attr){
  if(obj==null){obj={}}
  if(attr==null){attr={}}

  for(var i in attr){
    obj.setAttribute(i,attr[i]);
  }
}


Оригинальнее для DOM.
Ответить с цитированием
  #15 (permalink)  
Старый 26.08.2011, 07:16
Профессор
Посмотреть профиль Найти все сообщения от Solovei95
 
Регистрация: 15.03.2011
Сообщений: 353

Но для манипуляции со стилями:

Object.mix = function(obj,attr){
  if(obj==null){obj={}}
  if(attr==null){attr={}}

  for(var i in attr){
    obj.style.setProperty(i,attr[i],null);
  }
}

Есть такой - более верный вариант!

Последний раз редактировалось Solovei95, 26.08.2011 в 08:05.
Ответить с цитированием
  #16 (permalink)  
Старый 26.08.2011, 07:17
Профессор
Посмотреть профиль Найти все сообщения от Solovei95
 
Регистрация: 15.03.2011
Сообщений: 353

Здесь: корректно работает "background-image" вместо "backgroundImage"

Последний раз редактировалось Solovei95, 26.08.2011 в 08:05.
Ответить с цитированием
  #17 (permalink)  
Старый 26.08.2011, 08:07
Профессор
Посмотреть профиль Найти все сообщения от Solovei95
 
Регистрация: 15.03.2011
Сообщений: 353

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

Сообщение от Solovei95
Одни пишут свое в ответ другому!
Вот ужас. Зато предыдущие 5 постов - образец правильной темы.
Ответить с цитированием
  #19 (permalink)  
Старый 26.08.2011, 08:48
Профессор
Посмотреть профиль Найти все сообщения от Solovei95
 
Регистрация: 15.03.2011
Сообщений: 353

1. Мы добавляем атрибуты в HTML элемент (подойдет в SVG).
2. Насчет CSS - то здесь все легко и просто, и даже кроссбраузерно.
3. Позаимствовал, зато работает в IE и других браузерах.

(function(window){

window.setAttributes = function(obj,src){
  if(obj==null){obj={}}
  if(src==null){src={}}
  for(var i in src){
    obj.setAttribute(i,src[i]);
  }
}

window.setStyles = function(obj,src){
  if(obj==null){obj={}}
  if(src==null){src={}}
  for(var i in src){
    if(typeof obj.style.setProperty != "undefined"){
      obj.style.setProperty(i,src[i],null);
    } else {
      obj.style.setAttribute(i,src[i]);
    }
  }
}

window.addEvent = function(obj, type, func) {
  if(obj.addEventListener) {
    obj.addEventListener(type, func, false);	
  }
  else 
  if(obj.attachEvent) {
    var f = function(e) {
      func.call(obj, e); 
    }
    obj.attachEvent('on' + type, f);
  }
}


})(window);

Последний раз редактировалось Solovei95, 26.08.2011 в 09:51.
Ответить с цитированием
  #20 (permalink)  
Старый 26.08.2011, 09:52
Профессор
Посмотреть профиль Найти все сообщения от Solovei95
 
Регистрация: 15.03.2011
Сообщений: 353

Что говоря об SVG:

window.setAttributesNS = function(obj,ns,src){
  if(obj==null){obj={}}
  if(src==null){src={}}
  for(var i in src){
    obj.setAttribute(ns,i,src[i]);
  }
}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите пожалуйста у меня прблема Геворг Серверные языки и технологии 4 27.02.2011 14:00
У меня есть вопрос rzhsasha Firefox/Mozilla 29 08.12.2010 18:48
Простой сценарий определения текущего времени у меня в браузере почему-то не работает WitaliG Общие вопросы Javascript 2 02.08.2010 22:05
Что-то onmouseup у меня не хочет правильно работать. vahrusha Элементы интерфейса 5 10.04.2010 00:00
У кого есть код этих задач? скиньте! а то до меня не доходит немного Kirulezzz Общие вопросы Javascript 7 03.12.2009 00:34