使用createAttribute与直接设置属性?

时间:2011-10-06 17:07:23

标签: javascript

在javascript中,我们可以通过以下方式创建一个新的DOM元素......

使用createAttribute()+ setAttributeNode()dom方法:

var input = document.createElement("input"),
    type = document.createAttribute("type");

type.nodeValue = "text";
input.setAttributeNode(type);
container.appendChild(input);

或直接设置属性:

var input = document.createElement("input");

input.type = "text";
container.appendChild(input);

即使每个元素只有几个属性,后者最终可能会减少相当多的代码。

问题:有没有人遇到后一种方法的任何缺点(直接设置属性)?

我在几个浏览器上测试了这个(最新的FF,IE,Safari,Opera,旧的IE - 甚至IE6都有效),并且在基本测试(插入带有type,name和maxLength属性的文本输入)上都经过了测试。 Here's the fiddle如果有人需要它。

2 个答案:

答案 0 :(得分:11)

document.createAttribute
document.createAttributeNS
element.getAttributeNode
element.getAttributeNodeNS
... and a lot of others

将在DOM4中弃用,所以不要使用它,只需使用setAttribute(“name”,“value”)设置

http://www.w3.org/TR/dom/#element

someinput.type是不同的 这基本上是做

的捷径
setAttribute("type","text");
getAttribute("text");

希望这有帮助!

element._some_attribute_ is not available for all attributes, just some:
element.dir
element.lang
element.id
...etc

答案 1 :(得分:3)

显然IE 5.5在使用属性名称方面存在问题(即node[attributeName])。 Quirksmode has this well documented