JavaScript - 创建元素和设置属性

Den*_*kov 10 javascript attributes function

我有这些函数来创建元素并更改其属性.你能给我一个如何修改它们的建议吗?

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) || "";
}
Run Code Online (Sandbox Code Playgroud)

我希望得到像这样的东西('div',{'id':'test','class':'smth'});

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;
 }
Run Code Online (Sandbox Code Playgroud)

}

请帮忙=]

Eri*_*rce -1

我会推荐一个像 jQuery 这样的 javascript 框架。他们已经实现了此功能。

$("<div/>", {
    "class": "test",
    text: "Click me!",
    click: function(){
        $(this).toggleClass("test");
    }
}).appendTo("body");
Run Code Online (Sandbox Code Playgroud)

  • 我认为,虽然这总体上是不错的建议,但此人似乎正在构建自己的小型框架,可能是为了从经验中学习。 (4认同)