我正在尝试生成这样的节点:
<div layout horizontal></div>
使用 DOM API。
我正在尝试这样的事情:
var d = document.createElement("div");
d.setAttribute(...);
但从未真正设法生成我想要的东西。任何想法如何做到这一点?
谢谢。
最佳答案
您问题的主题反射(reflect)了这里的基本困惑。没有“无值(value)的属性”这样的东西。在 HTML 中,只有一种语法上的便利性可以用来编写没有特定值的属性,在这种情况下,属性的存在本身就意味着什么,无论它的值是什么。
所以你可以写<input required>
或 <input required='true'>
或 <input required='false'>
或 <input required='notrequired'>
这意味着完全相同的事情(即输入是必需的)。
当你试图“打印”时,用你的话说,“无值(value)”的属性,负责“打印”的人可能会选择“对你好”并代表没有值(value)的属性,而不是显示空字符串。然而,这并没有改变属性确实具有空字符串值的事实,通过取 elt.getAttribute
可以很容易地看出这一点。并直接检查属性值。
例如,如果我创建一个新的 div,然后将其内部 HTML 设置为 <input required="">
,然后某些环境(例如 Chrome devtools)会将元素显示为 <input required>
而不是 <input required="">
.换句话说,它只是进路和出路的语法糖。
一旦我创建了一个具有“无值”属性的元素,它实际上是一个空字符串,也许我可以通过将属性值设置为 null
使其真正无值| ?没有。 elt.setAttribute('required', null)
仅将属性值设置为字符串 "null"
.同样适用于 undefined
.
请注意,DOM 规范指定了一个属性 specified
在 Attr
对象。然而,据我所知,这似乎并没有被使用,在这个意义上,由 document.createAttribute
创建的属性总是得到 specified
设置为 true,这是通过解析 HTML 创建的属性,如 x.innerHTML = '<input required>';
总是得到 specified
设置为真,等等。和specified
被标记为只读,因此无论如何都无法检查将其设置为 false 会产生什么影响。
不管怎样,你的目标是什么?为什么您认为您需要这样做?
关于javascript - 如何生成无值属性的DOM节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24840083/