vit_nine
@vit_nine
Веб-разработчик

Как получить чистый html код?

Я получаю
<div draggable="true" ondragstart="drag(event)" id="item_col-2" class="layout_el col-2 gap">
    <div class="g-grid" ondrop="drop(event, this)" ondragover="allowDrop(event)">123</div>
    <div class="g-grid" ondrop="drop(event, this)" ondragover="allowDrop(event)">321</div>
</div>


Требуется получить
<div class="col-2 gap">
    <div class="g-grid">123</div>
    <div class="g-grid">321</div>
</div>


UPD
Есть некий конструктор страницы. Вставляешь туда разные блоки редактируешь и прочее, и при получении разметки страницы через .html(), вся эта требуха остается, хотелось чтоб он на каком-то этапе удалялась, и можно было в последствии сохранить "чистый код" в базу данных
  • Вопрос задан
  • 334 просмотра
Пригласить эксперта
Ответы на вопрос 2
Deonisius
@Deonisius
Родился в 11110110111 году, 11000 января.
Вариант в песочнице
var str = `<div draggable="true" onclick="return false;"  id="item_col-2" class="layout_el wtf  col-2 gap">
    <div class="g-grid" ondrop="drop(event, this)" ondragover="allowDrop(event)">123</div>
    <div class="g-grid" ondrop="drop(event, this)" ondragover="allowDrop(event)">321</div>
</div>`;

// Допустимые классы
const allowClasses = new Set(['col-2', 'gap', 'g-grid']);

const wrapper = document.createElement('div');
wrapper.innerHTML = str;
wrapper.querySelectorAll('*').forEach(el => {
  [...el.attributes].forEach(attr => {
    if (attr.name !== 'class') {
      el.removeAttribute(attr.name);
    } else {
      [...new Set(el.classList)].filter(x => !allowClasses.has(x)).forEach(cls => {
        el.classList.remove(cls);
      });
    }
  });
});
console.log(wrapper.innerHTML);
Ответ написан
Комментировать
wqertAnna
@wqertAnna
Мой вариант на основе регулярных выражений
https://codepen.io/anon/pen/orEzbE

const string = `<div draggable="true" ondragstart="drag(event)" id="item_col-2" class="layout_el col-2 gap">
    <div class="g-grid" ondrop="drop(event, this)" ondragover="allowDrop(event)">123</div>
    <div class="g-grid" ondrop="drop(event, this)" ondragover="allowDrop(event)">321</div>
</div>`;

const reg = /<\w+|class=".+?"|>|<\/\w+>|[^>]+?(?=<)|/igm;
const result = string.match(reg).join(" ").replace(/\s\s+/g, ' ');

console.log(result);


Просто поместите нужную вам строку в переменную string
Ответ написан
Ваш ответ на вопрос

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

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