konversi html ke string html dalam file JS

14

Saya ingin membuat beberapa html melalui JS, oleh karena itu saya perlu menulis html di dalam file JS seperti:

function createHtmlSection() {
    return "<li class=\"chapter up-wrapper-btn\">" +
        "<div>" +
        "<button><i class=\"fa fa-plus\" onclick=\"addSection('up',this)\"></i></button>" +
        "<label contenteditable=\"true\">section 1</label>" +
        "</div>" +
        "</li>";
}

apakah ada alat atau jalan pintas untuk membuat jenis string html ini?

Maksud saya, dalam hal ini saya harus mengetik semua html ini dengan tangan. dengan +dan perlu menambahkan "tanda.

Sesuatu yang dapat mengonversikan ini:

<li class="chapter up-wrapper-btn">
    <div>
       <button><i class="fa fa-plus" onclick="addSection('up',this)"></i></button>
        <label contenteditable="true">section 1</label>
     </div>
</li>

ke string pertama yang saya butuhkan untuk mengetik dengan tangan

Devy
sumber
Dari mana skrip Anda akan mendapatkan HTML yang ingin dikonversi menjadi string?
George Bora
Posting ini harus menjawab masalah Anda: stackoverflow.com/questions/220603/…
lainatnavi
Apa pertanyaan Anda?
Mawg mengatakan mengembalikan Monica

Jawaban:

7

Anda dapat menggunakan templat literal (perhatikan kutu belakang). Literal ini mendukung multiline, dan Anda tidak perlu melarikan diri dari tanda kutip (Anda harus keluar dari kutu belakang).

`<li class="chapter up-wrapper-btn">
    <div>
       <button><i class="fa fa-plus" onclick="addSection('up',this)"></i></button>
        <label contenteditable="true">section 1</label>
     </div>
</li>`

Contoh:

function createHtmlSection() {
  return `
    <li class="chapter up-wrapper-btn">
        <div>
           <button><i class="fa fa-plus" onclick="addSection('up',this)"></i></button>
            <label contenteditable="true">section 1</label>
         </div>
    </li>
  `;
}


document.querySelector('#root')
  .innerHTML = createHtmlSection();
<ul id="root"></ul>

Anda juga bisa meneruskan parameter ke fungsi, dan menyisipkannya ke string menggunakan interpolasi ekspresi :

Ori Drori
sumber
3
Jawaban Bagus, tetapi penting untuk mengatakan bahwa ini adalah ES6-Sintaks yang tidak didukung oleh semua browser. Jadi Anda akan membutuhkan sesuatu seperti Babel untuk mengkompilasi kode Anda ke JavaScript yang kompatibel dengan browser (ES5).
Alex-HM
2
Inilah mengapa saya menambahkan tautan ke MDN. Mereka memiliki tabel kompatibilitas di bagian bawah. Saat ini satu-satunya browser yang tidak mendukung literal templat adalah IE.
Ori Drori
3

perbarui file JS Anda ke:

function createHtmlSection() {
    return `
             <li class="chapter up-wrapper-btn">
                <div>
                  <button>
                     <i class="fa fa-plus" onclick="addSection('up',this)"></i> 
                  </button>
                  <label contenteditable="true">section 1</label>
               </div>
             </li>
          `
}

Baca tautan ini untuk informasi lebih lanjut: templat literals

maryam
sumber
1

Anda juga dapat menggunakan '(satu kutipan) sehingga Anda tidak harus meletakkan / depan setiap "

ahmetbcakici
sumber
1

Cukup gunakan templat literal (bukan tanda kutip tunggal "'" tetapi centang-belakang "` ") seperti ini:

// JavaScript

document.getElementById("a").innerHTML = `<li class="chapter up-wrapper-btn">
    <div>
       <button><i class="fa fa-plus" onclick="addSection('up',this)"></i></button>
        <label contenteditable="true">section 1</label>
     </div>
</li>`
<!-- HTML -->

<div id="a"></div>

Literal templat adalah literal string yang memungkinkan ekspresi tersemat. Anda dapat menggunakan fitur multi-line string dan interpolasi string. Mereka disebut "templat string" dalam edisi sebelumnya dari spesifikasi ES2015.

Via - MDN Web Documents

AndrewL64
sumber
1

Metode alternatif adalah dengan menggunakan tanda kutip tunggal dan keluar dari karakter baris baru.

Sesuatu seperti ini:

function createHtmlSection() {
    return '<li class="chapter up-wrapper-btn">\
        <div>\
            <button><i class="fa fa-plus" onclick="addSection(\'up\',this)"></i></button>\
            <label contenteditable="true">section 1</label>\
        </div>\
    </li>';
}

console.log(createHtmlSection());

Bertukar dengan tanda kutip tunggal menyelamatkan Anda dari lolosnya tanda kutip ganda dalam HTML, tetapi Anda masih perlu mengutip tanda kutip tunggal.


Alternatif lain adalah menggunakan array dan .join(''):

function createHtmlSection() {
    return [
	'<li class="chapter up-wrapper-btn">',
            '<div>',
                '<button><i class="fa fa-plus" onclick="addSection(\'up\',this)"></i></button>',
                '<label contenteditable="true">section 1</label>',
            '</div>',
        '</li>'
    ].join('');
}

console.log(createHtmlSection());

Ini memungkinkan Anda untuk dengan mudah menambah / mengedit / menghapus bagian-bagian kode nanti.


Kedua opsi ini untuk ES5 atau lebih lama.

Untuk peramban modern, silakan gunakan versi ES6 yang disediakan oleh Ori Drori .

Ismael Miguel
sumber