Have a DOM node (ie: Show What's a good technique to effectively achieve...
But without actually using outerHTML (which detaches the original element from the DOM; losing events, etc). asked Sep 13, 2016 at 15:43
6 You should probably do something like this:
Edit: For this to be more dynamic you could possibly write a function like the one below to loop over an object of attributes and their values and apply them to the target element. It seems like what you are looking to achieve is pretty difficult with vanilla javascript, I would look into using some sort of library, possibly react, as it seems like you are looking to make changes based on state.
answered Sep 13, 2016 at 15:50
NitsewNitsew 3,5621 gold badge14 silver badges20 bronze badges 2 Basically you will want to mutate the element to make each change individually. To make the changes you showed you will want to do the following
If you want to use this on any element you will need to change the argument passed to getElementById to match your element's ID. Using setAttribute will work for most attributes and works in the format setAttribute(attributeName, attributeValue). For details about how setAttribute works I would recommend looking at the mdn docs as they explain the caviats pretty extensively (https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute). For setting the interior of the element you will need to set the innerHtml property if you are adding html or the textContent property if assigning text only (useful as you shouldn't need to escape html) answered Sep 13, 2016 at 15:49
waterfoulwaterfoul 3133 silver badges6 bronze badges 2 Hướng dẫn cách sử dụng outerHTML trong JavaScript. Bạn sẽ biết cách sử dụng thuộc tính outerHTML để lấy cũng như cách thay thế toàn bộ các lệnh HTML dùng để mô tả Element lẫn các Element con cháu sau bài học này. outerHTML trong JavaScript và cách lấy toàn bộ các lệnh HTML mô tả một ElementCú phápouterHTML trong JavaScript là một thuộc tính của Element Object, có tác dụng lấy toàn bộ các lệnh HTML dùng để mô tả Element lẫn các Element con cháu của nó. Cú pháp sử dụng thuộc tính outerHTML trong JavaScript để lấy toàn bộ các lệnh HTML của Element như sau: element.outerHTML Giá trị trả về của thuộc tính outerHTML là toàn bộ các lệnh HTML dùng để mô tả Element lẫn các Element con cháu của nó. Ví dụVí dụ cụ thể, hãy xem cách sử dụng outerHTML để lấy toàn bộ mã lệnh HMTL của Element <div> Thuộc tính innerHTML sẽ chỉ lấy các lệnh HTML nằm bên trong Element <div> Mã mẫuKết hợp với phân tích ở ví dụ trên, hãy cùng xem cách dùng outerHTML để lấy toàn bộ câu lệnh HTML dùng để mô tả Element chỉ định như sau: <!DOCTYPE html> Trong mã HTML ở trên, sau khi click vào nút thì Element có thuộc tính
outerHTML trong JavaScript và cách thay thế một Element bằng các lệnh HTML mớiCú phápNgoài tác dụng lấy nội dung câu lệnh HTML thì chúng ta cũng có thể sử dụng outerHTML trong JavaScript để thay thế một Element chỉ định bằng các lệnh HTML mới, với cú pháp như sau: element.outerHTML = Lưu ý, nếu dùng outerHTML để thay đổi câu lệnh HTML chứa trong một Element chỉ định thì bản thân Element này cũng như toàn bộ các Element con cháu đều bị xoá đi khỏi DOM, và được thay thế bởi Element mới được mô tả bởi các câu lệnh HTML được thêm. Ngoài ra trong trường hợp giá trị let element = document.getElementById('box'); Mã mẫu 1Hãy cùng tìm hiểu cách thay thế một Element chỉ định bằng các lệnh HMTL trong ví dụ sau: <!DOCTYPE html> Trong mã HTML ở trên, sau khi click vào nút thì Element có thuộc tính
Mã mẫu 2Một ví dụ khác khi thay thế Element ban đầu bằng một Element mới được mô tả bởi các lệnh HTML, bằng thuộc tính outerHTML. <!DOCTYPE html> Các thẻ HTML mới sẽ mô tả Element mới, và Element mới này sẽ thay thế Element chỉ định như sau: . Khi thẻ script được bao gồm trong câu HTML được thêm bằng outerHTMLDo có thể sử dụng outerHTML để thay đổi nội dung lệnh HMTL có trong một Element, nên chúng ta có thể thêm cả thẻ script vào Element bằng phương pháp này. Tuy nhiên cần lưu ý là các script này tuy được thêm vào bằng outerHTML, nhưng chúng sẽ không được thực thi sau khi thêm vào. let element = document.getElementById('box'); Bởi vậy, kể cả khi bạn có các mã lệnh nhằm lấy giá trị của người dùng nhập vào để thiết lập outerHTML, thì cũng không phải lo lắng chuyện các giá trị chứa thẻ script mà người dùng tuỳ ý nhập vào có thể bị thực thi dẫn đến bị hack web. Tuy nhiên không phải tất cả các cách thực thi mã script đều bị cấm, vì vậy bạn nên sử dụng tới thuộc tính textContent thay vì outerHTML khi thêm các giá trị không thể xác thực trước vào mã HTML, chẳng hạn như đầu vào của người dùng.
Ví dụ cụ thể, chúng ta dùng outerHTML để thêm câu lệnh HTML chứa thẻ script vào Element như sau: <!DOCTYPE html> Với mã lệnh này, sau khi click nút, câu lệnh HTML mới chứa thẻ script sẽ được thay thế nội Element có Tổng kếtTrên đây Kiyoshi đã hướng dẫn bạn cách sử dụng outerHTML trong JavaScript để lấy và thay đổi câu lệnh HTML của một Element chỉ định rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé. Và hãy cùng tìm hiểu những kiến thức sâu hơn về JavaScript trong các bài học tiếp theo. Viết bởi Kiyoshi. Đã đăng ký bản quyền tác giả tại <a title="Bạn được tự do chia sẻ bài viết nhưng phải để lại đường link bài viết từ laptrinhcanban.com. Bạn không được sử dụng tài liệu cho mục đích thương mại. Không được phép chỉnh sửa nội dung được phát hành trên website của chúng tôi" style="color:#fff;background-color:silver" rel="license noopener" target="_blank" href="https://creativecommons.org/licenses/by-nc-nd/4.0/">Creativecommons</a>&nbsp;và <a title="Bạn được tự do chia sẻ bài viết nhưng phải để lại đường link bài viết từ laptrinhcanban.com. Bạn không được sử dụng tài liệu cho mục đích thương mại. Không được phép chỉnh sửa nội dung được phát hành trên website của chúng tôi" style="color:#fff;background-color:silver" target="_blank" rel="noopener" href="https://www.dmca.com/Protection/Status.aspx?ID=1631afcd-7c4a-467d-8016-402c5073e5cd" class="dmca-badge">DMCA</a><script src="https://images.dmca.com/Badges/DMCABadgeHelper.min.js"></p><h3 style="font-size:15px">Bài viết liên quan</h3><ul class="popular-posts"><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/dom-trong-javascript/childnodes-trong-javascript/" title="childNodes trong JavaScript và cách lấy các Node con" rel="bookmark">childNodes trong JavaScript và cách lấy các Node con</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/dom-trong-javascript/attributes-trong-javascript/" title="attributes trong JavaScript và cách lấy danh sách thuộc tính của Element" rel="bookmark">attributes trong JavaScript và cách lấy danh sách thuộc tính của Element</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/dom-trong-javascript/currentscript-trong-javascript/" title="currentScript trong JavaScript và cách lấy Element chứa mã script đang được xử lý" rel="bookmark">currentScript trong JavaScript và cách lấy Element chứa mã script đang được xử lý</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/dom-trong-javascript/children-trong-javascript/" title="children trong JavaScript và cách lấy các Element con" rel="bookmark">children trong JavaScript và cách lấy các Element con</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/dom-trong-javascript/css-selectors-trong-javascript/" title="CSS selectors trong JavaScript" rel="bookmark">CSS selectors trong JavaScript</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/dom-trong-javascript/documentfragment-trong-javascript/" title="DocumentFragment trong JavaScript và cách thêm đồng thời nhiều Node" rel="bookmark">DocumentFragment trong JavaScript và cách thêm đồng thời nhiều Node</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/dom-trong-javascript/firstchild-trong-javascript/" title="firstChild trong JavaScript và cách lấy Node con đầu tiên" rel="bookmark">firstChild trong JavaScript và cách lấy Node con đầu tiên</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/dom-trong-javascript/getattribute-trong-javascript/" title="getAttribute trong JavaScript và cách lấy giá trị thuộc tính của Element" rel="bookmark">getAttribute trong JavaScript và cách lấy giá trị thuộc tính của Element</a></h3></div></li></ul></div><div id="keugoi"><span>Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!</span></div><section class="icon-bar-2" style="border-bottom:dotted grey .3px!important"><a target="_blank" title="chia sẻ qua facebook" rel="noopener noreferrer" href="https://www.facebook.com/sharer/sharer.php?u=https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/dom-trong-javascript/outerhtml-trong-javascript/" class="facebook"><i class="fa fa-facebook"></i></a> <a target="_blank" rel="noopener noreferrer" href="https://twitter.com/intent/tweet?url=https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/dom-trong-javascript/outerhtml-trong-javascript/" title="chia sẻ qua twitter" class="twitter"><i class="fa fa-twitter"></i></a> <a target="_blank" rel="noopener noreferrer" href="https://getpocket.com/edit?url=https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/dom-trong-javascript/outerhtml-trong-javascript/" title="chia sẻ qua pocket" class="pocket"><i class="fa fa-get-pocket"></i></a> <span class="zalo-share-button" title="chia sẻ qua zalo" style="margin-left:18px;margin-bottom:-3px" data-href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/dom-trong-javascript/outerhtml-trong-javascript/" data-oaid="579745863508352884" data-layout="3" data-color="blue" data-customize="false"></span></section><p class="ico-folder"><a target="_blank" href="https://laptrinhcanban.com/"><span itemprop="HOME">HOME</span></a><span class="sya"></span>>> <a target="_blank" class="article-category-link" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/">học javascript - lập trình javascript cơ bản</a>>><a target="_blank" class="article-category-link" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/dom-trong-javascript/">13. dom trong javascript</a></p><nav id="article-nav"><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/dom-trong-javascript/innertext-trong-javascript/" id="article-nav-older" class="article-nav-link-wrap" style="float:left;text-align:right;padding-right:20px"><strong class="article-nav-caption">Bài sau</strong><div class="article-nav-title">innerText trong JavaScript và cách lấy hoặc thiết lập giá trị text hiển thị của Element</div></a><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/dom-trong-javascript/innerhtml-trong-javascript/" id="article-nav-newer" class="article-nav-link-wrap" style="float:right;text-align:left;padding-left:20px"><strong class="article-nav-caption">Bài tiếp</strong><div class="article-nav-title">innerHTML trong JavaScript và cách lấy hoặc thiết lập câu lệnh HTML chứa trong một Element</div></a><span id="ezoic-pub-ad-placeholder-611" class="ezoic-adpicker-ad"></span></nav><div id="recent_posts_down"><div class="widget_athemes_tabs"><ul id="widget-tab" class="clearfix widget-tab-nav"><li class="active">Bài viết mới nhất</li></ul><div class="widget"><ul><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/tach-chuoi-trong-php/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban45.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/tach-chuoi-trong-php/">Tách chuỗi trong PHP (explode, preg_split)</a></span> <span>tháng 9 17, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/cat-chuoi-trong-php/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban21.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/cat-chuoi-trong-php/">Cắt chuỗi trong PHP (substr, mb_substr)</a></span> <span>tháng 9 17, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/tach-chuoi-thanh-mang-trong-php/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban57.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/tach-chuoi-thanh-mang-trong-php/">Tách chuỗi thành mảng trong PHP (explode)</a></span> <span>tháng 9 17, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/tim-kiem-chuoi-trong-php/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban43.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/tim-kiem-chuoi-trong-php/">Tìm kiếm chuỗi trong PHP (strpos)</a></span> <span>tháng 9 17, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/dem-so-lan-xuat-hien-cua-ky-tu-trong-chuoi-php/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban52.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/dem-so-lan-xuat-hien-cua-ky-tu-trong-chuoi-php/">Đếm số lần xuất hiện của ký tự và chuỗi trong chuỗi PHP (substr_count)</a></span> <span>tháng 9 17, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/chuyen-chuoi-thanh-mang-trong-php/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban47.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/chuyen-chuoi-thanh-mang-trong-php/">Chuyển chuỗi thành mảng trong PHP (str_split, mb_str_split)</a></span> <span>tháng 9 17, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/tach-tung-ky-tu-trong-chuoi-php/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban47.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/tach-tung-ky-tu-trong-chuoi-php/">Tách từng ký tự trong chuỗi PHP (substr, preg_split)</a></span> <span>tháng 9 17, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/xoa-ky-tu-trong-chuoi-php/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban15.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/php/nhap-mon-lap-trinh-php/chuoi-trong-php/xoa-ky-tu-trong-chuoi-php/">Xóa ký tự trong chuỗi PHP</a></span> <span>tháng 9 15, 2022</span></div></li></ul></div></div></div><footer class="entry-meta entry-footer"></footer><hr class="entry-footer-hr"></div><div id="profiletitle2">Profile</div><div id="profileblock2"><div id="profilephoto2"><a target="_blank" rel="noopener" href="https://www.facebook.com/mr.nchita"><img width="100" height="100" alt="きよしです!笑" ezimgfmt="rs rscb2 src ng ngcb2" class="ezlazyload" data-ezsrc="/css/images/kiyoshi.webp"></a></div><div id="profiletext2"><p>Tác giả : <a href="https://www.facebook.com/mr.nchita" target="_blank" rel="nofollow noopener">Kiyoshi (Chis Thanh)</a></p><p>Kiyoshi là một <a href="https://www.youtube.com/c/ChisThanh" target="_blank" rel="nofollow noopener">cựu du học sinh tại Nhật Bản</a>. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.<span id="ezoic-pub-ad-placeholder-196" class="ezoic-adpicker-ad"></span></p></div></div></div></article><aside id="sidebar"><div id="sidebar_first"><div class="search" style="margin-top:-30px"><div id="fb-root"></div><script async defer crossorigin="anonymous" src="https://connect.facebook.net/vi_VN/sdk.js#xfbml=1&version=v12.0&appId=3084959888222500&autoLogAppEvents=1" nonce="KPkvxeh4">
|