JavaScript - создайте элемент и установите атрибуты

У меня есть эти функции, чтобы создать элементы и изменить их атрибуты. Вы могли дать мне совет относительно того, как изменить их?

function create(elem) {
return document.createElementNS ? document.createElementNS("http://www.w3.org/1999/    xhtml", elem) : document.createElement(elem);
}

function attr(elem, name, value) {
 if (!name || name.constructor != String) return "";
 name = {"for": "htmlFor", "class": "className"}[name] || name;
 if (typeof value != "undefined") {
  elem[name] = value;
  if (elem.setAttribute) elem.setAttribute(name, value);
 }
 return elem[name] || elem.getAttribute(name) || "";
}

Я хочу добраться, что-то вроде этого создает ('отделение', {'идентификатор': 'тест', 'класс': 'что-то'});

function create(elem, attr) {
 if (!attr) return document.createElementNS ? document.createElementNS("http://www.w3.org/1999/xhtml", elem) : document.createElement(elem);
 if (attr) {
  var el = document.createElementNS ? document.createElementNS("http://www.w3.org/1999/xhtml", elem) : document.createElement(elem);
  for (var i = 0; i < attr.length; i++) {
   attr(el, name[i], value[i]);
  }
  return el;
 }

}

Помогите =]

10
задан Denis Bobrovnikov 25 June 2010 в 11:57
поделиться

2 ответа

Вы не можете итерировать объект подобным образом:

for (var k in attrs) {
  if (attr.hasOwnProperty(k))
    attr(el, k, attrs[k]);
}

Обратите внимание, что я изменил вашу переменную "attr" на "attrs", чтобы не скрывать созданную вами функцию "attr". Также в функции "attr" наверху измените тест "undefined":

if (typeof value !== undefined)

чтобы было немного безопаснее. Сравнения с "==" и "!=" пытаются преобразовать тип, что не нужно, если вы просто проверяете undefined.

2
ответ дан 4 December 2019 в 04:01
поделиться

Я бы порекомендовал фреймворк javascript, например jQuery. У них уже реализована эта функция.

$("<div/>", {
    "class": "test",
    text: "Click me!",
    click: function(){
        $(this).toggleClass("test");
    }
}).appendTo("body");
0
ответ дан 4 December 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: