在JavaScript中,我們可以通過以下方式創建一個新的DOM元素...使用createAttribute而不是直接設置屬性?
通過使用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工作)和基本測試(插入文本輸入的類型,名稱和maxLength屬性)上都測試了它們都通過了。 Here's the fiddle如果有人需要它。
使用'setAttribute()'和'getAttribute()'總是等價於使用相應的屬性,這並不完全正確。例如,'value'屬性(它總是反映輸入的當前值)與'value'屬性(僅代表初始值)分開存在。一個更明顯的例子是'style'屬性,它包含一個字符串,'style'屬性是'CSSStyleDeclaration'對象,每個單獨的樣式屬性都有單獨的屬性。 –
我在哪裏說他們總是等價的? :P – 2013-07-26 11:57:37
公平點,你沒有。不知道現在什麼促使我的評論。 –