JavaScript setAttribute альтернатива - PullRequest
0 голосов
/ 28 марта 2009

Я создаю эту функцию JS, которая создает элемент Функция принимает два параметра strName и objAttributes

function createElement( strName, objAttributes )
{
  var elem = document.createElement(strName);

  for ( var i in objAttributes )
    elem.setAttribute(i, objAttributes[i]);

  return elem;
}

Это отлично работает в Fx, но не в MSIE. Я знаю, что метод setAttibute содержит ошибки и предлагаемый обходной путь -

elem.attr = 'val';

Но сейчас я понятия не имею, как написать это в моем цикле.

Я пробовал и elem.style и elem ['style'], но ни один из них не работает.

Может кто-нибудь дать мне совет,

заранее спасибо

т

Ответы [ 3 ]

5 голосов
/ 28 марта 2009

Использование elem[i].

function createElement( strName, objAttributes )
{
  var elem = document.createElement(strName);

  for ( var i in objAttributes )
      elem[i] = objAttributes[i];

  return elem;
}
1 голос
/ 29 марта 2009

Пусть jQuery справится с кросс-браузерной ерундой ...

 $(elem).attr(i, objAttributes[i]);
1 голос
/ 28 марта 2009

Вы не можете просто поменять настройки свойств и установить атрибут.

Вы должны быть осторожны с настройкой свойств элемента вместо использования setAttribute. Свойства стилей и обработчики событий должны быть тщательно написаны, а те атрибуты, которые раньше минимизировались в html (отключено, несколько, доступно только для чтения), имеют допустимые значения, специфичные для браузера.

Также, если вы установите element.class = "mynewclass", вы получите ошибку, потому что class - это зарезервированное слово javascript, хотя его совершенно безопасно использовать в качестве строки в присваивании setAttribute. Имя свойства - «.className», а правильное имя атрибута «for» метки - «htmlFor».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...