Конвертировать HTML-строку в JavaScript, сохраняя отступы

Я хочу настроить таргетинг или сопоставить только первое вхождение в строке

Типичный сценарий:

У меня есть структура HTML, которую я использую в JavaScript.

<ul>
    <li> ABC </li>
    <li> DEF </li>
    <li> GHI <span> GHI-SPAAN </span> </li>
</ul>

Чтобы преобразовать вышеупомянутое в строку, в моем редакторе я могу просто найти и заменить EOL на '+и начало строки с ' так что код будет

var tpl = ''+
    '<ul> '+
    '<li> ABC </li> '+
    '<li> DEF </li> '+
    '<li> GHI <span> GHI-SPAAN </span> </li> '+
    '</ul> ';

Но вы видите, я теряю отступ, когда заменяю начало строки на '<

Поэтому я хочу, чтобы уникальная цель (цель только первое вхождение < и заменить на '<)

Я использую KOMODO edit и Sublime Text 2

2 ответа

Решение

Я не пользователь KomodoEdit, но я попробовал эти замены, и они работали:

  • начальная цитата: заменить ^(\s*)< с \1<
  • окончание цитаты: заменить >\s*$ с >' +

Надеюсь это поможет.

Вместо преобразования HTML в строку JS было бы гораздо лучше создать элементы в JS и поместить их в DOM. Это даст вам гораздо больше контроля, не создаст такой сложный в обслуживании / чтении код и будет намного быстрее (среди других преимуществ):

var outerDiv = document.createElement("div");
outerDiv.className = "spa-shell-head";

var innerDivLogo = document.createElement("div");
innerDivLogo.className = "spa-shell-head-logo";

var innerDivAcct = document.createElement("div");
innerDivAcct.className = "spa-shell-head-acct";

var innerDivSearch = document.createElement("div");
innerDivSearch.className = "spa-shell-head-search";

outerDiv.appendChild(innerDivLogo);
outerDiv.appendChild(innerDivAcct);
outerDiv.appendChild(innerDivSearch);
document.body.appendChild(outerDiv);

Вышесказанное создает следующее:

введите описание изображения здесь

https://jsfiddle.net/yfeLbhe4/

Другие вопросы по тегам