Стиль setAttribute не работает в IE - PullRequest
3 голосов
/ 13 июля 2010

Установка атрибута style для элементов не работает в IE 6/7.Но в других браузерах это работает хорошо.

Я использую код

var box_style = 'width: 200px; background:red';

document.getElementById('box').setAttribute("style", box_style);

Это работает во всех других браузерах, кроме IE 6/7

Я делаю что-то не так?или есть какое-то решение этой проблемы?Пожалуйста, помогите!

Ответы [ 5 ]

12 голосов
/ 13 июля 2010

Окончательный ответ равен cssText:

el.style.cssText = 'width: 200px; background:red';

Примечание равно

Избегайте set / getAttribute вездеВы можете!

5 голосов
/ 13 июля 2010

Попробуйте изменить это на

var box = document.getElementById('box');
box.style.width = '200px';
box.style.backgroundColor = 'red';
3 голосов
/ 13 июля 2010

В Internet Explorer 6-7 нарушена реализация setAttribute / getAttribute. Не используйте их.

По сути, setAttribute (для IE) выглядит примерно так:

function (attribute, value) {
    this[attribute] = value;
}

Таким образом, если нет отношения 1: 1 между именем свойства и именем атрибута, оно нарушается.

Установите свои свойства индивидуально или, как правило, лучше, установите className и определите стили во внешней таблице стилей.

0 голосов
/ 30 декабря 2013

вы можете использовать setAttribute, который также совместим с IE-8 и IE-7

var el = document.getElementById('id' + id);
el.setAttribute('fontWeight','bold');
el.setAttribute('color','red');
el.setAttribute('fontSize','150%');
el.setAttribute('bgColor','red');

для присвоения класса элементу, я предлагаю следующее

el.className = "class-name";
0 голосов
/ 13 июля 2010

В качестве альтернативы вы можете использовать платформу PrototypeJS (http://www.prototypejs.org),, которая позволяет вам делать следующее:

$('box').setStyle({
  width: '200px',
  backgroundColor : 'red'
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...