Ну да, все-таки копирование - не наследование.. неверно выразился
|
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); |
Ну и секреты у вас!
Но вы тупо используете свойство: elem[attr] = prop[attr]; Где: attr - это сам атрибут elem - элемент prop - своство атрибута элемента |
Оказывает у вас мозга больше!
Но вот мой вариант. 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. |
Но для манипуляции со стилями:
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); } } Есть такой - более верный вариант! |
Здесь: корректно работает "background-image" вместо "backgroundImage"
|
Я прошу закрыть тему т.к. ни к чему хорошему это обсуждение не приведет! Одни пишут свое в ответ другому!
|
Цитата:
|
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); |
Что говоря об 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]); } } |
Часовой пояс GMT +3, время: 17:36. |