@Artem0071
Безработный mr. Junior

Как найти блоки?

Я получаю список блоков вот так:
let DOMBlocks = document.getElementsByClassName('obj-block');  // получаю блоки
let StoreBlock = this.blocks; // массив блоков

// Вот так выглядят блоки в сторе:
blocks: [{
    id: 1,
    position: {
      top: 1,
      left: 10
    }
  },
  {
    id: 2,
    position: {
      top: 200,
      left: 350
    }
  }
]

// блоки рендерятся в следующее:
<div :class="'block obj-block block-' + block.id">
  </div>


То есть получается каждый блок имеет id в классе.
(Это вообще нормально, или лучше делать как нибудь через id="block-IdOfBlock"?)

В общем споткнулся на регулярном выражении, не могу понять как вычленить эти блоки:
let DOMBlocks = document.getElementsByClassName('obj-block');

          let StoreBlock = this.blocks;

          let blocks = [];

          for (let i = 0; i < DOMBlocks.length; i++){
            console.log(DOMBlocks[i].className);
          }

// и как их правильно добавлять в массив блоков, чтобы получилось это:
blocks = [
  { 
    id: 1,
    position: {},
    ...,
    elementInDOM: DOMBlocks[i]
]
  • Вопрос задан
  • 204 просмотра
Пригласить эксперта
Ответы на вопрос 1
romash
@romash
web-разработчик
blocks.push({
    id: /block-(\d+)/.exec(DOMBlocks[i].className)[1] * 1,
    ...
});

А вообще для хранения любых данных в верстке лучше использовать data-атрибуты
<div :class="'block obj-block'" :data-id="block.id">
  </div>

Понятия не имею, что это за шаблонизатор у вас, но думаю, смысл вы уловите
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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