Ответ 1
eval('oRow.cells[1].style.'+strAttribute)
Никогда не используйте eval
как это (*). В JavaScript вы можете получить доступ к свойству, имя которого хранится в строке с использованием квадратных скобок. object.plop
совпадает с object['plop']
:
to.style[name]= from.style[name];
(*: никогда не используйте eval
вообще, если вы можете помочь ему. Есть только несколько очень конкретных и редких случаев, в которых вы нуждаетесь.)
Есть ли способ перебрать элементы стиля
Предполагается, что объект style
поддерживает интерфейс DOM уровня 2 CSS CSSStyleDeclaration
. Вы можете перебрать правила и применить их к другому элементу, подобному этому:
for (var i= from.style.length; i-->0;) {
var name= from.style[i];
to.style.setProperty(name,
from.style.getPropertyValue(name),
priority= from.style.getPropertyPriority(name)
);
}
в IE?
Нет, IE не поддерживает весь интерфейс CSSStyleDeclaration, и выше не будет работать. Однако есть более простой способ не включать цикл, который будет работать и с IE, и с другими браузерами:
to.style.cssText= from.style.cssText;
Просто так! IE не совсем сохраняет текст CSS так, как должен, но разница не имеет значения для простого встроенного копирования стиля.
Однако, как сказал Пикрасс (+1), если вы копируете целый элемент, а не только стили, cloneNode
на сегодняшний день является самым элегантным способом сделать это.