w javascript, możemy utworzyć nowy element DOM w następujący sposób ...Korzystanie createAttribute vs. tylko ustawienie atrybutu bezpośrednio?
Używając createAttribute() + setAttributeNode() metod DOM:
var input = document.createElement("input"),
type = document.createAttribute("type");
type.nodeValue = "text";
input.setAttributeNode(type);
container.appendChild(input);
lub po prostu ustawienie atrybuty bezpośrednio :
var input = document.createElement("input");
input.type = "text";
container.appendChild(input);
Te ostatnie mogą okazać się znacznie mniejszym kodem, nawet jeśli istnieje tylko kilka atrybutów na element.
Pytanie: czy ktokolwiek napotkał jakiekolwiek wady tej ostatniej metody (ustawienie atrybutów bezpośrednio)?
Testowałem to w kilku przeglądarkach (najnowsze FF, IE, Safari, Opera, stare IE - nawet IE6 pracował) i na podstawowym teście (wstawiając dane wejściowe z atrybutami typu, nazwy i maxLength), wszystkie one przeszły . Here's the fiddle, jeśli ktoś tego potrzebuje.
To nie do końca prawda, że użycie 'setAttribute()' i 'getAttribute()' jest zawsze równoważne użyciu odpowiedniej właściwości. Na przykład, 'value' nieruchomość (który zawsze odzwierciedla bieżącą wartość wejścia) istnieje oddzielnie od' value' atrybutu (co stanowi jedynie wartość początkową). Bardziej oczywistym przykładem jest 'style' atrybut, który zawiera ciąg, w porównaniu z' własności style', która jest 'obiekt CSSStyleDeclaration' z indywidualnych właściwości dla poszczególnych właściwości stylu. –
gdzie powiedziałem, że zawsze są one równoważne? : P –
Uczciwy punkt, nie zrobiłeś tego. Nie jestem pewien, co skłoniło mnie teraz do komentarza. –