Tagi mogą mieć wiele atrybutów. Kolejność, w jakiej atrybuty pojawiają się w kodzie, nie ma znaczenia. Na przykład:
<a href="#" title="#">
<a title="#" href="#">
Jak mogę „znormalizować” kod HTML w JavaScript, aby kolejność atrybutów była zawsze taka sama? Nie obchodzi mnie, która kolejność jest wybrana, o ile zawsze jest taka sama.
UPDATE : moim pierwotnym celem było ułatwienie porównywania (w JavaScript) 2 stron HTML z niewielkimi różnicami. Ponieważ użytkownicy mogą używać innego oprogramowania do edycji kodu, kolejność atrybutów może się zmienić. To sprawia, że różnica jest zbyt szczegółowa.
ODPOWIEDŹ : Cóż, po pierwsze dzięki za wszystkie odpowiedzi. I TAK, jest to możliwe. Oto, jak mi się to udało. To jest dowód słuszności koncepcji, z pewnością można go zoptymalizować:
function sort_attributes(a, b) {
if( a.name == b.name) {
return 0;
}
return (a.name < b.name) ? -1 : 1;
}
$("#original").find('*').each(function() {
if (this.attributes.length > 1) {
var attributes = this.attributes;
var list = [];
for(var i =0; i < attributes.length; i++) {
list.push(attributes[i]);
}
list.sort(sort_attributes);
for(var i = 0; i < list.length; i++) {
this.removeAttribute(list[i].name, list[i].value);
}
for(var i = 0; i < list.length; i++) {
this.setAttribute(list[i].name, list[i].value);
}
}
});
To samo dla drugiego elementu diff, $('#different')
. Teraz $('#original').html()
i $('#different').html()
pokaż kod HTML z atrybutami w tej samej kolejności.