【发布时间】:2016-08-31 13:41:46
【问题描述】:
我需要在一个js代码行中创建<a href="http://someurl.com"></a>元素
这不起作用:
var gg = document.createElement("a", {href : "http://someurl.com"})
这个结果是:<a is="[object Object]"></a>
思想 MDN 说:
var element = document.createElement(tagName[, options]);
options 是一个可选的 ElementCreationOptions 对象。如果此对象已定义并具有is 属性,则创建元素的is 属性将使用此属性的值初始化。如果对象没有is 属性,则值为空。
https://developer.mozilla.org/en-US/docs/Web/API/Document/createElement
这个 ElementCreationOptions 对象是某种奇异的对象吗?我围绕这个对象尝试了许多不同的组合,但没有任何效果,结果总是我看到那个奇怪的is 属性!我还在规范中找到了它:https://www.w3.org/TR/custom-elements/#attr-is,但不知道它实际上是如何工作的。
ps: 这也不起作用:
var gg = document.createElement("a").setAttribute("href" , "someurl.com")
导致未定义。
【问题讨论】:
-
options不是属性对象。 -
为什么需要在一个命令中完成?
-
只需使用
var gg = document.createElement("div"); gg.setAttribute("href" , "someurl.com");。如果您需要它作为单个表达式,请将其放入辅助函数并调用它。 -
您需要更仔细地阅读文档。 “如果此对象已定义并具有“is”属性,则已创建元素的“is”属性将使用此属性的值初始化。”它没有说选项对象初始化任意元素属性。
-
请注意 document.createElement("div") 而不是 "a" - 在 2 行上执行此操作,它会执行您想要的操作。 (
setAttribute不会将元素返回给gg)
标签: javascript