javascript - 如何生成无值属性的DOM节点

标签 javascript html dom polymer

我正在尝试生成这样的节点:

<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 规范指定了一个属性 specifiedAttr对象。然而,据我所知,这似乎并没有被使用,在这个意义上,由 document.createAttribute 创建的属性总是得到 specified设置为 true,这是通过解析 HTML 创建的属性,如 x.innerHTML = '<input required>';总是得到 specified设置为真,等等。和specified被标记为只读,因此无论如何都无法检查将其设置为 false 会产生什么影响。

不管怎样,你的目标是什么?为什么您认为您需要这样做?

关于javascript - 如何生成无值属性的DOM节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24840083/

相关文章:

javascript - 如何删除javascript中动态加载的图像

javascript - 如何使用 FileReader javascript 读取 XML 文件?

css - 具有绝对内部元素的相对文章 0px 高度

javascript - 添加包含 &lt;script&gt; 的 dom 元素

javascript - IE 和 DOM 标准模型

javascript - 在谷歌浏览器扩展中打开 Socket.IO 连接

javascript - 带有表单的 Angular 旁模态窗口。当我取消\关闭窗口时正在提交表单

javascript - AngularJS - 检查文件夹是否存在

html - 当我悬停 flex 元素时如何实现这一点?

php - 使用 DOMXml 和 Xpath 更新 XML 条目