我正在尝试生成这样的节点:
<div layout horizontal></div>
使用DOM API。
我正在尝试这样的事情:
var d = document.createElement("div");
d.setAttribute(...);
但从未真正设法生成我想要的东西。任何想法如何做到这一点?
感谢。
答案 0 :(得分:6)
您的问题主题反映了这里的基本混淆。没有&#34;无价值的属性&#34;。 HTML中只有一种语法方便,可以编写没有特定值的属性,只要属性的存在意味着什么,无论其价值如何。
所以你可以写<input required>
或<input required='true'>
或<input required='false'>
或<input required='notrequired'>
,这意味着完全相同的事情(输入是必填)。
当你尝试打印&#34;用你的话说,&#34;无价值&#34;属性,谁负责&#34;打印&#34;可能会选择对你好“#34;并表示没有值的属性,而不是显示空字符串。但是,这并不会改变属性确实具有空字符串值的事实,可以通过elt.getAttribute
并直接检查属性值来轻松查看。
例如,如果我创建一个新div,然后将其内部HTML设置为<input required="">
,那么某些环境(例如Chrome devtools)会将该元素显示为<input required>
而不是{{1} }。换句话说,它只是在进出路上的语法糖。
一旦我创建了一个带有&#34;无价值的元素&#34;属性,实际上是一个空字符串,也许我可以通过将属性值设置为<input required="">
使其真正无价值?不。 null
仅将属性值设置为字符串elt.setAttribute('required', null)
。与"null"
相同。
请注意,DOM规范在undefined
个对象上指定了specified
的属性。但是,据我所知,这似乎没有被使用,因为Attr
创建的属性总是将document.createAttribute
设置为true,这是通过解析HTML创建的属性。 specified
始终将x.innerHTML = '<input required>';
设置为true等等。specified
标记为只读,因此无法检查将其设置为false的效果无论如何。
无论如何,你的目标是什么?为什么你认为你需要这样做?
答案 1 :(得分:1)
您可以使用元素的setAttributeNode
方法追加使用createAttribute
创建的属性节点:
var el = document.createElement('div'),
attr = document.createAttribute('layout');
el.setAttributeNode(attr);
答案 2 :(得分:1)
您正在寻找createAttribute()
和setAttributeNode()
方法。
var elelement = document.createElement('div'),
var attribute = document.createAttribute('layout');
var attribute2 = document.createAttribute('horizontal');
element.setAttributeNode(attribute);
element.setAttributeNode(attribute2);
答案 3 :(得分:1)
只需将属性设置为空字符串。
element.setAttribute('hidden', '')