มีหลายวิธีที่คุณสามารถเปลี่ยนชื่อเรื่องได้สองวิธีหลักเป็นดังนี้:
วิธีการที่น่าสงสัย
ใส่แท็กชื่อใน HTML (เช่น<title>Hello</title>
) จากนั้นในจาวาสคริปต์:
let title_el = document.querySelector("title");
if(title_el)
title_el.innerHTML = "World";
วิธีที่ถูกต้องชัดเจน
สิ่งที่ง่ายที่สุดคือการใช้วิธีการที่จัดทำโดย Document Object Model (DOM)
document.title = "Hello World";
วิธีการเดิมคือสิ่งที่คุณจะทำเพื่อเปลี่ยนแท็กที่พบในเนื้อหาของเอกสาร การใช้วิธีนี้ในการปรับเปลี่ยนเมตาดาต้า - แท็กเหมือนที่พบในหัว (เหมือนtitle
) เป็นวิธีปฏิบัติที่น่าสงสัยที่สุดไม่ใช่สำนวนไม่ดีสไตล์เริ่มต้นและอาจไม่สามารถพกพาได้ สิ่งหนึ่งที่คุณมั่นใจได้ก็คือมันจะรบกวนนักพัฒนารายอื่นหากพวกเขาเห็นtitle.innerHTML = ...
ในโค้ดที่พวกเขากำลังบำรุงรักษา
สิ่งที่คุณต้องการใช้เป็นวิธีหลัง คุณสมบัตินี้มีให้ใน DOM Specificationโดยเฉพาะเพื่อวัตถุประสงค์ในการเปลี่ยนชื่อ
โปรดทราบว่าหากคุณทำงานกับ XUL คุณอาจต้องการตรวจสอบว่าเอกสารได้โหลดแล้วก่อนที่จะพยายามตั้งค่าหรือรับหัวเรื่องไม่เช่นนั้นคุณจะเรียกใช้undefined behavior
(นี่คือมังกร) ซึ่งเป็นแนวคิดที่น่ากลัวในตัวของมันเอง สิ่งนี้อาจหรือไม่อาจเกิดขึ้นผ่าน JavaScript เนื่องจากเอกสารใน DOM นั้นไม่จำเป็นต้องเกี่ยวข้องกับ JavaScript แต่ XUL เป็นสัตว์ร้ายทั้งหมดดังนั้นฉันพูดนอกเรื่อง
พูดถึง .innerHTML
คำแนะนำที่ดีบางข้อที่ควรคำนึงถึง.innerHTML
คือการใช้โดยทั่วไปมักจะไม่เป็นระเบียบ ใช้appendChild
แทน
แม้ว่าสองกรณีที่ฉันยังพบว่า.innerHTML
มีประโยชน์อยู่นั้นรวมถึงการแทรกข้อความธรรมดาลงในองค์ประกอบขนาดเล็ก ...
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;
}());
... และล้างภาชนะ ...
container.innerHTML = "";
// as opposed to... umm... okay, I guess I'm rolling my own
[...container.childNodes].forEach(function(child){
container.removeChild(child);
});