Để chèn HTML vào tài liệu thay vì thay thế nội dung của một phần tử, hãy sử dụng phương thức
document.body.innerHTML = "";
4Một chuỗi chứa tuần tự hóa HTML của hậu duệ của phần tử. Đặt giá trị của
document.body.innerHTML = "";
3 sẽ xóa tất cả các phần tử con của phần tử và thay thế chúng bằng các nút được tạo bằng cách phân tích cú pháp HTML được cung cấp trong chuỗi htmlStringdocument.body.innerHTML = "";
6 document.body.innerHTML = "";
7Bị ném nếu cố gắng đặt giá trị của
document.body.innerHTML = "";
3 bằng cách sử dụng chuỗi không phải là HTML được định dạng đúngdocument.body.innerHTML = "";
9 document.body.innerHTML = "";
7Bị ném nếu cố gắng chèn HTML vào một nút có nút gốc là một
document.documentElement.innerHTML = `${document.documentElement.innerHTML.replace[/Item 3
2 đại diện cho tập hợp các nút DOM mới cho các phần tử mới
Item 1
Item 2
Item 3
3, thì thuộc tính
Item 1
Item 2
Item 3
5 của phần tử
Item 1
Item 2
Item 3
5 được thay thế bằng phần tử
Item 1
Item 2
Item 3
2 mới được tạo ở bước 1
Item 1
Item 2
Item 3
2 mớiĐặt giá trị của
document.body.innerHTML = "";
3 cho phép bạn thêm nội dung mới vào phần tử hiện cóVí dụ: chúng ta có thể nối một mục danh sách mới [_______21_______9] vào danh sách hiện có [
const list = document.getElementById["list"];
list.innerHTML += `Item ${list.children.length + 1}`;
0]HTML
Item 1
Item 2
Item 3
JavaScript
const list = document.getElementById["list"];
list.innerHTML += `Item ${list.children.length + 1}`;
Xin lưu ý rằng việc sử dụng
document.body.innerHTML = "";
3 để nối thêm các phần tử HTML [e. g. const list = document.getElementById["list"];
list.innerHTML += `Item ${list.children.length + 1}`;
2] sẽ dẫn đến việc loại bỏ bất kỳ người nghe sự kiện nào đã đặt trước đó. Nghĩa là, sau khi bạn thêm bất kỳ phần tử HTML nào theo cách đó, bạn sẽ không thể nghe các trình xử lý sự kiện đã đặt trước đóKhông có gì lạ khi thấy
document.body.innerHTML = "";
3 được sử dụng để chèn văn bản vào trang web. Điều này có khả năng trở thành phương tiện tấn công trên một trang web, tạo ra rủi ro bảo mật tiềm ẩnlet name = "John";
// assuming 'el' is an HTML DOM element
el.innerHTML = name; // harmless in this case
// …
name = "alert['I am John in an annoying alert!']";
el.innerHTML = name; // harmless in this case
Mặc dù điều này có vẻ giống như một cuộc tấn công kịch bản chéo trang, nhưng kết quả là vô hại. HTML chỉ định rằng một thẻ
const list = document.getElementById["list"];
list.innerHTML += `Item ${list.children.length + 1}`;
4 được chèn với document.body.innerHTML = "";
3Tuy nhiên, có nhiều cách để thực thi JavaScript mà không cần sử dụng các phần tử
const list = document.getElementById["list"];
list.innerHTML += `Item ${list.children.length + 1}`;
4, do đó, vẫn có rủi ro bảo mật bất cứ khi nào bạn sử dụng document.body.innerHTML = "";
3 để đặt các chuỗi mà bạn không kiểm soát được. Ví dụconst name = "";
el.innerHTML = name; // shows the alert
Vì lý do đó, bạn nên sử dụng thay vì
document.body.innerHTML = "";
3document.documentElement.innerHTML = `${document.documentElement.innerHTML.replace[/