Javascript: Saya memiliki representasi DOM dari sebuah node (elemen atau dokumen) dan saya mencari representasi stringnya. Misalnya,
var el = document.createElement("p");
el.appendChild(document.createTextNode("Test"));
harus menghasilkan:
get_string(el) == "<p>Test</p>";
Saya memiliki perasaan yang kuat, bahwa saya melewatkan sesuatu yang sepele yang sederhana, tetapi saya tidak menemukan metode yang berfungsi di IE, FF, Safari dan Opera. Oleh karena itu, HTML luar bukanlah pilihan.
javascript
string
dom
cross-browser
element
Boldewyn
sumber
sumber
Jawaban:
Anda dapat membuat node induk sementara, dan mendapatkan konten innerHTML-nya:
EDIT: Silakan lihat jawaban di bawah tentang outerHTML. el.outerHTML harus menjadi semua yang dibutuhkan.
sumber
document.documentElement
ke dalam div?element
sebelum menambahkannya ketmp
karena saat Anda menambahkannyatmp
, itu akan dihapus daridocument
.Apa yang Anda cari adalah 'outerHTML', tapi kami membutuhkan penggantian karena tidak kompatibel dengan browser lama.
Anda akan menemukan plugin jQuery saya di sini: Dapatkan HTML luar elemen yang dipilih
sumber
outerHTML
di versi 11, setelah saya mengajukan pertanyaan. Jadi itu bukan pilihan saat itu. Saya bahkan memperbarui pertanyaan saya dengan komentar yang sesuai, jika Anda melihat lebih dekat.innerHtml
innerHTML
; )outerHTML
atribut tersebut. Lihat juga caniuse.com/#feat=xml-serializerSaya tidak berpikir Anda memerlukan skrip rumit untuk ini. Gunakan saja
sumber
Di bawah FF Anda dapat menggunakan
XMLSerializer
objek untuk membuat serial XML menjadi string. IE memberi Andaxml
properti dari sebuah node. Jadi, Anda dapat melakukan hal berikut:sumber
.xml
tidak bekerja pada node DOM (seperti node di halaman saat ini). Ini hanya bekerja pada node dokumen XML DOM.outerHTML
tidak berfungsi pada node dokumen XML DOM. Ini hanya berfungsi pada simpul DOM (seperti pada simpul di halaman saat ini). Konsistensi yang baik menurut saya.Gunakan Elemen # outerHTML:
Ini juga dapat digunakan untuk menulis elemen DOM. Dari dokumentasi Mozilla:
https://developer.mozilla.org/en-US/docs/Web/API/Element/outerHTML
sumber
Gunakan element.outerHTML untuk mendapatkan representasi penuh dari elemen, termasuk tag dan atribut luar.
sumber
Jika elemen Anda memiliki induk
sumber
<li>
dalam daftar.Mencoba
sumber
Saya telah menemukan bahwa untuk kasus penggunaan saya, saya tidak selalu menginginkan keseluruhan HTML luar. Banyak node yang memiliki terlalu banyak turunan untuk ditampilkan.
Berikut fungsinya (diuji minimal di Chrome):
https://gist.github.com/kahunacohen/467f5cc259b5d4a85eb201518dcb15ec
sumber
Saya telah membuang banyak waktu untuk mencari tahu apa yang salah ketika saya beralih melalui DOMElements dengan kode di jawaban yang diterima. Inilah yang berhasil untuk saya, jika tidak, setiap elemen detik menghilang dari dokumen:
sumber
document.getElementsByTagName()
, koleksi itu akan berubah di tengah-tengahfor
, sehingga elemen detik terlewati.jika menggunakan react:
sumber
.outerHTML
tidak spesifik React; itu adalah standar DOM. Lihat jawaban @Rich Apodaca.reactdom.findDOMNode()
..., bukan.outerHTML
, tapi terima kasih atas posisinya.