带有 ID 的 CreateElement?

IT技术 javascript jquery
2021-02-18 22:34:21

我正在尝试修改此代码以给这个 div 项目一个 ID,但是我在谷歌上没有找到任何东西,而且 idName 不起作用。我读了一些关于append 的内容,但是对于一个看起来很简单的任务来说似乎很复杂,那么有没有替代方法?谢谢 :)

g=document.createElement('div'); g.className='tclose'; g.v=0;
6个回答

您应该使用以下.setAttribute()方法:

g = document.createElement('div');
g.setAttribute("id", "Div1");
@Mai 你能进一步解释一下吗?我看不懂这句话。
2021-04-20 22:34:21
@mystrdat 我认为 Mai 是想说 setAttribute() 可用于创建元素的其他属性,而不仅仅是 id。
2021-05-03 22:34:21
使用此代码,我们不仅创建元素 ID,还创建元素的所有属性。
2021-05-10 22:34:21

您可以g.id = 'desiredId'从您的示例中使用来设置您创建的元素的 id。

我总是认为代码较少的答案是最好的。更多的镜头是不可能的。谢谢。
2021-04-17 22:34:21
var g = document.createElement('div');
g.id = 'someId';

您可以使用 Element.setAttribute

例子:

g.setAttribute("id","yourId")

g.setAttribute("class","tclose")


这是我做得更好的功能:

function createElement(element, attribute, inner) {
  if (typeof(element) === "undefined") {
    return false;
  }
  if (typeof(inner) === "undefined") {
    inner = "";
  }
  var el = document.createElement(element);
  if (typeof(attribute) === 'object') {
    for (var key in attribute) {
      el.setAttribute(key, attribute[key]);
    }
  }
  if (!Array.isArray(inner)) {
    inner = [inner];
  }
  for (var k = 0; k < inner.length; k++) {
    if (inner[k].tagName) {
      el.appendChild(inner[k]);
    } else {
      el.appendChild(document.createTextNode(inner[k]));
    }
  }
  return el;
}

示例 1:

createElement("div");

将返回:

<div></div>

示例 2:

createElement("a",{"href":"http://google.com","style":"color:#FFF;background:#333;"},"google");`

将返回:

<a href="http://google.com" style="color:#FFF;background:#333;">google</a>

示例 3:

var google = createElement("a",{"href":"http://google.com"},"google"),
    youtube = createElement("a",{"href":"http://youtube.com"},"youtube"),
    facebook = createElement("a",{"href":"http://facebook.com"},"facebook"),
    links_conteiner = createElement("div",{"id":"links"},[google,youtube,facebook]);

将返回:

<div id="links">
    <a href="http://google.com">google</a>
    <a href="http://youtube.com">youtube</a>
    <a href="http://facebook.com">facebook</a>
</div>

您可以创建新元素并设置属性并附加子元素

createElement("tag",{attr:val,attr:val},[element1,"some text",element2,element3,"or some text again :)"]);

attr 或子元素没有限制

尽管他们是对的,但感谢您提供更多信息和替代方法。很有见地。
2021-04-16 22:34:21
当您可以使用标准对象时,您究竟为什么要用自己的语法 [必须解析] 来传递属性?另外,如果您需要创建大量元素,您需要一个模板系统 [例如 Handlebars] 而不是过于复杂的功能。
2021-04-17 22:34:21
这个功能是我的功能中的第一个,我还没有考虑过更新。我认为你的想法更好,我一定会改变它。谢谢你。
2021-04-22 22:34:21

为什么不使用 jQuery 做到这一点?

var newDiv= $('<div/>', { id: 'foo', class: 'tclose'})
尽管规范不禁止使用保留关键字作为属性名称,但最好加上class引号。
2021-05-03 22:34:21
不是每个人都可以或想要使用 jQuery。但如果他是,他可以做 var g = $('<div id="blah" class="tclose">');
2021-05-05 22:34:21
@BradleyMountford :他用 jQuery 标记了问题。我建议了一个 jQuery 解决方案
2021-05-15 22:34:21