Показать сообщение отдельно
  #1 (permalink)  
Старый 03.11.2015, 21:48
Интересующийся
Отправить личное сообщение для Руднев Посмотреть профиль Найти все сообщения от Руднев
 
Регистрация: 03.11.2015
Сообщений: 11

Изменение порядка элементов дерева
Уважаемые знатоки!

Всем доброго времени суток. Осваиваю JavaScript, с основами все вроде ничего. Сейчас мучаю DOM. В процессе обучения столкнулся вот с каким вопросом. Можно ли поменять местами ноды в родительском элементе, т.е. что бы элементы item у родителя wrap меняли свое расположение.

В HTML:

враппер, где лежат несколько элементов:

<div class="wrap">
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item">3</div>
  <div class="item">4</div>
  <div class="item">5</div>
  <div class="item">6</div>
</div>


и есть кнопка, по нажатию которой будет происходить сие действие:

<form action="">
            <button value="Start" class="start-btn">Старт</button>
</form>


В Js:


Получаем кнопку и все item(ы).

var btnStart = document.querySelector(".start-btn")
var items = document.getElementsByClassName('item');



Далее инициализируем массив, куда положим потом наши item(ы)

var itemsArr = [];



Теперь пробегаемся по нашему объекту items и кладем все значения в массив.

for (var data in items) {
        if (!items.hasOwnProperty(data)) continue
        itemsArr.push(items[data]);
}



Теперь напишем наш шафл, который будет менять местами item(ы)

function shuffle(itemsArr) {
        itemsArr.sort(function () {
            return 0.5 - Math.random()
        })
}


И теперь по клику у нас должна генериться новая сетка.

btnStart.addEventListener("click", function (event) {
        console.log("Поменял!");
        event.preventDefault();
        shuffle(itemsArr);

        А как в HTML это запихнуть?

});


Если посмотреть в консоль, itemsArr меняет свой порядок при клике, НО, как это отрисовать в HTML?

appendChild не работает.


Готов к критике, но только объективной. Если подобные задачи уже были рассмотрены, ткните пальцем пожалуйста, где.

Заранее спасибо.
Ответить с цитированием