Include Dữ Liệu Từ File HTML Bằng Javascript - Viblo
Có thể bạn quan tâm
Bài đăng này đã không được cập nhật trong 4 năm
Giới thiệu
Xin chào các bạn, hôm nay mình sẽ giới thiệu tới các bạn một bài toán khác mình đã gặp trong dự án. Đó là xử lý include dữ liệu từ file HTML vào nội dung trang web bằng javascript. Hãy cùng mình phân tích yêu cầu nhé.
Yêu cầu
Khách hàng có xây dựng nhiều modules(mỗi module tương tự 1 trang web dịch vụ của KH) khác nhau và các modules này đều đang chạy đồng thời, tuy nhiên phần header/footer thì tất cả các modules đều giống nhau. Vì thế phần header/footer này KH muốn tách ra thành 2 files riêng để tiện cho việc chỉnh sửa sau này (Khi có yêu cầu chỉnh sửa HTML/CSS/JS của header/footer thì chỉ cần sửa ở trong 2 files này thì tất cả các modules đều được cập nhât). Để đảm bảo CSS/JS của header/footer thì KH đã chọn giải pháp là viết CSS/JS internal.
Thực hiện
Với yêu cầu như trên thì mình sẽ xử lý như sau:
- Viết mã HTML, đánh dấu vị trí để include header và footer
- Viết mã JS để lấy dữ liệu từ file HTML của header/footer được chỉ định để chèn và vị trí đã đánh dấu Cùng xem phần code mình đã thực hiện nhé
HTML
Mình đánh dấu vị trí header/footer như code phía dưới, và có truyền thêm class là include-html và attribute data-file là đường dẫn của file HTML mà mình cần include.
<!DOCTYPE html> <html> <head> ... <title>My website</title> ... </head> <body> <div class="header-section include-html" data-file="myfolder/header.html"></div> <div class="main-content"> ... // content here ... </div> <div class="footer-section include-html" data-file="myfolder/footer.html"></div> </body> </html>Javascript
Mình sẽ thêm javascript internal trong file HTML ở trên và có chú thích ở trong các đoạn code
<script> function includeHTML() { var i, elem, file, xhttp; // Khởi tạo các biến // Lấy tất cả các thẻ có class là include-html (Như ở trên mình định nghĩa 2 thẻ để include header/footer) var includeFiles = document.getElementsByClassName('include-html'); // Duyệt vòng lặp từ mảng phần tử ở trên for (i = 0; i < container.length; i++) { elem = includeFiles[i]; // Gán biến elem bằng thẻ đang được duyệt file = elem.getAttribute("data-file"); // Gán biến file là attribute của thẻ đang được duyệt if (file) { // Kiểm tra nếu tồn tại attribute này thì thực hiện tiếp xhttp = new XMLHttpRequest(); // Khởi tạo request xhttp.onreadystatechange = function() { // Lắng nghe event khi request kết thúc if (this.readyState == 4) { // Nếu status là 200 (thành công) thì set nội dung của file vào thẻ đang được duyệt if (this.status == 200) {elem.innerHTML = this.responseText;} // Nếu status 404 (lỗi) thì hiển thị nội dung lỗi không thấy component if (this.status == 404) {elem.innerHTML = "Component not found.";} // Sau khi duyệt xong thẻ này thì xoá class include-html elem.classList.remove("include-html"); // Gọi lại function includeHTML để duyệt tất cả các thẻ có class include-html còn lại includeHTML(); } } // Tạo và gửi request xhttp.open("GET", file, true); xhttp.send(); return; // Thoát function } } }; includeHTML(); </script>Kết luận
Trên đây là bài toán mình đã gặp và cách xử lý, cảm ơn các bạn đã theo dõi bài viết này. Hi vọng nó là 1 case study để các bạn tham khảo .
Nguồn tham khảo
w3school
JavaScript include HTMLAll rights reserved
Từ khóa » Truyền Biến Javascript Vào Html
-
Nhúng JavaScript Vào HTML - VietTuts
-
Bài 7: Javascript Và HTML DOM - Thien An Blog
-
Bài 03: Cách Nhúng (chèn) JavaScript Vào HTML
-
Hướng Dẫn Gọi Hàm Javascript Trong Html Mới Nhất 2020
-
Nhúng JavaScript Vào File HTML - VN4U
-
Cách Hiển Thị Dữ Liệu Ra Màn Hình Trong JavaScript - Web Cơ Bản
-
Làm Thế Nào để Thêm JavaScript Trong HTML - Hostinger
-
Cách Thêm Thẻ HTML Bằng Javascript
-
Đọc Và Gán Giá Trị Cho Phần Tử HTML Bằng JQuery
-
Cách Sử Dụng Javascript Trong Html - Xây Nhà
-
Bài 6: DOM - Xử Lý Các Phần Tử HTML Trong Javascript - Góc Làm Web
-
Sự Kiện Trong Dom - JavaScript
-
Thao Tác Với DOM Trong JavaScript - NIIT - ICT Hà Nội
-
Hướng Dẫn Khai Báo Javascript Trong Html Mới Nhất 2020