Задать вопрос

Возможно ли как то отсортировать теги по их аттрибутам с помощью js?

Здравствуйте. Есть три таких тега:

<div memory="128-gb"></div>
<div memory="64-gb"></div>
<div memory="256-gb"></div>


Возможно ли отсортировать эти теги по атрибутам memory?
Для более полного обьяснения после сортировки должно стать так:

<div memory="64-gb"></div>
<div memory="128-gb"></div>
<div memory="256-gb"></div>


Теги переместились и от сортировались по возрастанию
  • Вопрос задан
  • 197 просмотров
Подписаться 2 Простой 12 комментариев
Решения вопроса 1
const container = document.querySelector('.container');
[...container.querySelectorAll('div[memory]')]
    .sort((a, b) => parseInt(a.getAttribute('memory'), 10) - parseInt(b.getAttribute('memory'), 10))
    .forEach(element => container.append(element));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@zombtron
Ну, вот так где-то
(если с сортировкой строк. для int лень ковырять):
<div class="memory" memory="128-gb">128-gb</div>
	<div class="memory" memory="64-gb">64-gb</div>
	<div class="memory" memory="256-gb">256-gb</div>
<script>

unordered = {};
keys = Array();
divs = document.querySelectorAll('.memory');
for(i=0; i<divs.length; i++){
	keys[i] = divs[i].attributes.memory.nodeValue;
	unordered[divs[i].attributes.memory.nodeValue] = divs[i];
	parentCont = divs[i].parentNode;
	divs[i].remove();
}
keys = keys.sort();

for(i=0; i<keys.length; i++){
	parentCont.appendChild(unordered[keys[i]]);
}

</script>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы