Изменить случайные элементы в DOM (без jQuery)

2
задан Joggi 17 January 2019 в 11:04
поделиться

1 ответ

Вы должны использовать insertBefore, чтобы сделать это.

let max = document.getElementsByTagName("div").length;
let min = 0;
let x1 = Math.round((Math.random() * (max - min)) + min);
let x2 = Math.round((Math.random() * (max - min)) + min);
let tmp1 = document.getElementsByTagName("div")[x1];
let tmp2 = document.getElementsByTagName("div")[x2];

// from here, do the changes
let wrapper = document.getElementById("wrapper"); // get wrapper reference
wrapper.insertBefore(tmp1, tmp2); // insert node before tmp1.
wrapper.insertBefore(tmp2, tmp1);
<div id="wrapper">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
<div>11</div>
</div>

На что следует обратить внимание,

  1. Все предметы, которые необходимо изменить , должен быть под некоторым узлом. Вместо того, чтобы иметь их непосредственно в document, я создал узел-обертку и добавил его.
  2. Просто для облегчения просмотра я добавил узлы как div, а не img. Но код должен работать точно так же.
  3. Это просто для демонстрации insertBefore. Для правильной реализации вам нужно проверить nextSibling или previousSibling и сделать это с этими узлами.
0
ответ дан Prajwal 17 January 2019 в 11:04
поделиться
Другие вопросы по тегам:

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