Ada banyak cara Anda dapat mengubah judul, dua utama, seperti ini:
Metode Yang Dipertanyakan
Letakkan tag judul di HTML (misalnya <title>Hello</title>
), lalu di javascript:
let title_el = document.querySelector("title");
if(title_el)
title_el.innerHTML = "World";
Metode Yang Jelas Benar
Yang paling sederhana adalah dengan benar-benar menggunakan metode yang disediakan oleh Document Object Model (DOM)
document.title = "Hello World";
Metode yang pertama umumnya adalah apa yang akan Anda lakukan untuk mengubah tag yang ditemukan di badan dokumen. Menggunakan metode ini untuk mengubah tag meta-data seperti yang ditemukan di kepala (seperti title
) adalah praktik yang patut dipertanyakan, tidak idiomatik, gaya yang tidak terlalu bagus untuk memulai, dan bahkan mungkin tidak portabel. Satu hal yang dapat Anda yakini adalah bahwa hal itu akan mengganggu pengembang lain jika mereka melihat title.innerHTML = ...
kode yang mereka pertahankan.
Yang ingin Anda lakukan adalah metode yang terakhir. Properti ini disediakan dalam Spesifikasi DOM khusus untuk tujuan, seperti namanya, mengubah judul.
Perhatikan juga bahwa jika Anda bekerja dengan XUL, Anda mungkin ingin memeriksa bahwa dokumen telah dimuat sebelum mencoba untuk mengatur atau mendapatkan judul, karena jika tidak Anda memohon undefined behavior
(di sini menjadi naga), yang merupakan konsep menakutkan dalam dirinya sendiri. Ini mungkin atau mungkin tidak terjadi melalui JavaScript, karena dokumen pada DOM tidak selalu berkaitan dengan JavaScript. Tapi XUL adalah binatang buas nother keseluruhan, jadi saya ngelantur.
Berbicara tentang .innerHTML
Beberapa saran yang baik untuk diingat adalah bahwa menggunakan .innerHTML
umumnya ceroboh. Gunakan appendChild
sebagai gantinya.
Meskipun dua kasus di mana saya masih menemukan .innerHTML
berguna termasuk memasukkan teks biasa ke dalam elemen kecil ...
label.innerHTML = "Hello World";
// as opposed to...
label.appendChild(document.createTextNode("Hello World"));
// example:
el.appendChild(function(){
let el = document.createElement("span");
el.className = "label";
el.innerHTML = label_text;
return el;
}());
... dan membersihkan wadah ...
container.innerHTML = "";
// as opposed to... umm... okay, I guess I'm rolling my own
[...container.childNodes].forEach(function(child){
container.removeChild(child);
});