Создать класс "двигающихся" объектов

Есть тестовый сайт, на котором уже есть 2 объекта, которые могу хватать и перетаскивать. Работает алгоритм на 2 переменных "div" и "div2" - соответственно они же и id этих двух объектов.

Теперь вопрос, можно ли (предполагаю, что да, но не знаю, как) работать не через ID и прописывать отдельный скрипт для движения и хватания каждого объекта, а создать класс по типу "moveable" и для него прописать скрипты хватания и движения. Просто с js знаком буквально 2 дня и не знаю, как это все прописать для классов, а не для id. Потому что, как минимум, в самом начале в мою переменную "div" передастся не один объект, а сразу группа (массив) элементов с этим классом. И как для каждого из них прописывать проверку нажатия и перетаскивания, я не знаю. Вот ссылка на код

И на всякий случай, сюда его тоже добавлю

var mousePosition;
var offset = [0,0];
var div = document.getElementById("div");
var div2 = document.getElementById("div2");
var isDown = false;
var isDown2 = false;
var last = false;

//Если пользователь схватил первый div
div.addEventListener('mousedown', function(e) {
    isDown = true;
    offset = [
        this.offsetLeft - e.clientX,
        this.offsetTop - e.clientY
    ];
}, true);

//Если пользователь схватил второй div

div2.addEventListener('mousedown', function(e) {
    isDown2 = true;
    offset = [
        div2.offsetLeft - e.clientX,
        div2.offsetTop - e.clientY
    ];
}, true);

//Пользователь отпустил ЛКМ

document.addEventListener('mouseup', function() {
    isDown = false;
    isDown2 = false;
}, true);

//Функция движения первого div

document.addEventListener('mousemove', function(event) {
    event.preventDefault();
    if (isDown) {
        mousePosition = {

            x : event.clientX,
            y : event.clientY

        };
        div.style.left = (mousePosition.x + offset[0]) + 'px';
        div.style.top  = (mousePosition.y + offset[1]) + 'px';
    }
}, true);

//Функция движения второго div

document.addEventListener('mousemove', function(event) {
    event.preventDefault();
    if (isDown2) {
        mousePosition = {

            x : event.clientX,
            y : event.clientY

        };
        div2.style.left = (mousePosition.x + offset[0]) + 'px';
        div2.style.top  = (mousePosition.y + offset[1]) + 'px';
    }
}, true);

//Смена позиции объектов

document.getElementById('but').onclick = function() {
  if (last == false) {
    document.getElementById('div2').classList.add("back");
    last = true;
  } else {
    document.getElementById('div2').classList.remove("back");
    last = false;
  }
}
body {
  background-color: #081C24;
  overflow: hidden;
}
#div {
  background: blue;
  top: 50px;
  left: 50px;
  width: 100px;
  height: 100px;
  position: absolute;
  cursor: pointer;
}

#div2 {
  width: 100px;
  height: 100px;
  position: absolute;
  background: red;
  top: 10px;
  left: 10px;
  cursor: pointer;
}
.back {
  z-index: -1;
}
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="style.css">
    <title></title>
  </head>
  <body>
    <div id="div"></div>
    <div id="div2"></div>
    <button type="button" id="but" name="button"></button>
    <script src="script.js"></script>
  </body>
</html>


Ответы (1 шт):

Автор решения: Hollow

document.getElementsByClassName(args[]) – вернёт коллекцию всех элементов с подходящими классами.

var test = parentDOM.getElementsByClassName(class); //HTMLCollection[n]
var testTarget = parentDOM.getElementsByClassName(class)[0]; //первый подходящий по имени класса формата HTML-элемент`

Соответственно, дальше можно работать со списком полученным. Рекомендую почитать про коллекцию и всё же использовать ID внутри для большей безопасности кода и удобства использования.

→ Ссылка