Взять комментированный контент из html

383
28 декабря 2017, 23:18

Вопрос таков. Допустим на сайте есть какие то куски html которые комментированы. К примеру вот так <!--<div>text</div>-->

Можно ли с помощью javascript взять эти куски и использовать как то?

Но не надо давать какие то отдельные библиотеки. Не хочу для этого прикрепить еще какую то библиотеку с сотнями строк на сайт.

И еще парсинг с регулярками совсем не интересен, потому что тогда выбранные узлы будут просто string и отдельно работать с ними не получится.

Вот примерный код html.

<div id="image-container"> 
    <!-- 
    <img src="http://lorempixel.com/200/100/animals/1" width="200" height="100"> 
    <img src="http://lorempixel.com/200/100/animals/2" width="200" height="100"> 
    --> 
</div> 
<div id="container"></div>

Answer 1

Может быть так?

var text = document.getElementById('image-container').innerHTML.replace(/(<!--)|(-->)/g, '').trim(); 
 
document.getElementById('container').innerHTML= text;
<div id="image-container"> 
    <!-- 
    <img src="https://www.askideas.com/media/17/Cute-Ragdoll-Kittens.jpg" width="200" height="100"> 
    <img src="http://www.porjati.ru/uploads/posts/2015-05/thumbs/1431621727_1.jpg" width="200" height="100"> 
    --> 
</div> 
<div id="container"></div>

Answer 2

Можно, но в виде строки

function enumDom() { 
  var div = document.getElementById('image-container'); 
  for (var i = 0; i < div.childNodes.length; i++) { 
    if (div.childNodes[i].nodeType == 8)  // NODE_COMMENT 
      console.log(div.childNodes[i].nodeValue); 
  } 
}
<div id="image-container"> 
    <!-- 
    <img src="http://lorempixel.com/200/100/animals/1" width="200" height="100"> 
    <img src="http://lorempixel.com/200/100/animals/2" width="200" height="100"> 
    --> 
</div> 
<div id="container"></div> 
<button onclick="enumDom()">Enum</button>

Чем парсить такую строку - смотрите сами. jQuery с этим справится.

А зачем такое извращение? Не проще ли эти элементы сделать просто невидимыми?

Если Вам нужно подгрузить изображения, так сделайте так

function showImage() { 
  var div = document.getElementById('image-container'); 
  for (var i = 0; i < div.children.length; i++) { 
    var img = div.children[i]; 
    img.src = img.attributes['data-src'].value; 
    img.style.display = 'inline'; 
  } 
}
#image-container img { 
  display: none; 
}
<div id="image-container"> 
    <img data-src="https://multator.ru/preview/uximrdanemqi" width="200" height="100"> 
</div> 
<div id="container"></div> 
<button onclick="showImage()">Show</button>

READ ALSO
Как сделать одного размера?

Как сделать одного размера?

ЗдравствуйтеНа главной странице отображаются товары Woocomerce

291
Поисковый запрос в JIRA на Python3

Поисковый запрос в JIRA на Python3

Доброго времени сутокЯ в процессе обучения Python (кнопаю сразу Python3) и поставили передо мной такую задачу: Написать скриптик на Python, работающий...

283
вход в чат на PHP

вход в чат на PHP

ЗдравствуйтеНе могли бы вы мне помочь , изучаю PHP пытаюсь сделать регистрацию и вход в чат http://heximal

336
Адаптивная шапка (header) для сайта

Адаптивная шапка (header) для сайта

Здравствуйте, всеУ меня два вопроса по поводу панели навигации на верху сайта

277