JavaScript打印表單:解決內容更新失效問題
使用JavaScript打印表單時,有時會遇到表單內容(例如textarea文本域和復選框)更新後,打印結果卻顯示舊值的問題。本文分析此問題的原因並提供解決方案。
問題描述:
用戶在表單中輸入或修改內容(包括文本和復選框選中狀態),但打印輸出的結果並未反映這些更改。
示例代碼(存在問題):
<meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <div id="divKanZhengPanel-binli"> <div class="checkDiv"> <label>正位</label> <label>外顯斜</label> <label>內顯斜</label> <label>外隱斜</label> <label>內隱斜</label> </div> </div> <button id="dw">點我打印</button> <script> document.getElementById('dw').addEventListener('click', function() { let docHtml1 = $("#divKanZhengPanel-binli").prop("outerHTML"); $('#print-iframe').remove(); let iframe1 = document.createElement('IFRAME'); let doc1 = null; iframe1.id = "print-iframe"; iframe1.style = 'position:absolute;width:0px;height:0px;left:-0px;top:-0px;visibility: auto;'; document.body.appendChild(iframe1); doc1 = iframe1.contentWindow.document; doc1.write(docHtml1); doc1.close(); iframe1.contentWindow.focus(); iframe1.contentWindow.print(); }) </script>
問題原因:
原代碼使用outerHTML
獲取表單元素的HTML內容。此方法只獲取元素的靜態HTML結構,不會包含動態更新後的表單值。
解決方案:
使用cloneNode(true)
方法克隆表單元素。 cloneNode(true)
會復制元素及其所有子節點和屬性,包括表單元素的當前值。
改進後的代碼:
<meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <div id="divKanZhengPanel-binli"> <div class="checkDiv"> <label>正位</label> <label>外顯斜</label> <label>內顯斜</label> <label>外隱斜</label> <label>內隱斜</label> </div> </div> <button id="dw">點我打印</button> <script> document.getElementById('dw').addEventListener('click', function() { $('#print-iframe').remove(); let iframe1 = document.createElement('IFRAME'); let doc1 = null; iframe1.id = "print-iframe"; iframe1.style = 'position:absolute;width:0px;height:0px;left:-0px;top:-0px;visibility: auto;'; document.body.appendChild(iframe1); setTimeout(function() { // 使用setTimeout确保iframe加载完成 doc1 = iframe1.contentWindow.document; doc1.body.appendChild(document.querySelector('#divKanZhengPanel-binli').cloneNode(true)); doc1.close(); iframe1.contentWindow.focus(); iframe1.contentWindow.print(); }); }) </script>
通過使用cloneNode(true)
,打印出的表單內容將準確反映用戶在頁面上進行的修改。 添加了setTimeout
函數,確保在iframe內容加載完成後再執行打印操作,避免出現打印內容為空白的情況。 請確保你的代碼中引入了jQuery庫,因為代碼使用了$
符號。如果未使用jQuery,則需要使用原生JavaScript方法來選擇元素。
以上是為什麼JavaScript打印表單時,修改後的內容不起效?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

self-closingtagsinhtmlandxmlaretagsthatclosethem hexptneedneedingAseparateClosingTag,SightifyingmarkupStrupupStrupureAndenHancingCodingsigy.1)shemesessientInsentialInxmlforelementswithcontentsswithcontent content content content content content content content content contentcontent,確保wellwell-formedDocuments.2)Inhtmlible5,inhtmlibut forfix

要構建一個功能強大且用戶體驗良好的網站,僅靠HTML是不夠的,還需要以下技術:JavaScript賦予網頁動態和交互性,通過操作DOM實現實時變化。 CSS負責網頁的樣式和佈局,提升美觀度和用戶體驗。現代框架和庫如React、Vue.js和Angular,提高開發效率和代碼組織結構。

布爾屬性是HTML中的特殊屬性,不需要值即可激活。 1.布爾屬性通過存在與否控制元素行為,如disabled禁用輸入框。 2.它們的工作原理是瀏覽器解析時根據屬性的存在改變元素行為。 3.基本用法是直接添加屬性,高級用法可通過JavaScript動態控制。 4.常見錯誤是誤以為需要設置值,正確寫法應簡潔。 5.最佳實踐是保持代碼簡潔,合理使用布爾屬性以優化網頁性能和用戶體驗。

HTML代碼可以通過在線驗證器、集成工具和自動化流程來確保其清潔度。 1)使用W3CMarkupValidationService在線驗證HTML代碼。 2)在VisualStudioCode中安裝並配置HTMLHint擴展進行實時驗證。 3)利用HTMLTidy在構建流程中自動驗證和清理HTML文件。

HTML、CSS和JavaScript是構建現代網頁的核心技術:1.HTML定義網頁結構,2.CSS負責網頁外觀,3.JavaScript提供網頁動態和交互性,它們共同作用,打造出用戶體驗良好的網站。

HTML的功能是定義網頁的結構和內容,其目的在於提供一種標準化的方式來展示信息。 1)HTML通過標籤和屬性組織網頁的各個部分,如標題和段落。 2)它支持內容與表現分離,提升維護效率。 3)HTML具有可擴展性,允許自定義標籤增強SEO。

HTML的未來趨勢是語義化和Web組件,CSS的未來趨勢是CSS-in-JS和CSSHoudini,JavaScript的未來趨勢是WebAssembly和Serverless。 1.HTML的語義化提高可訪問性和SEO效果,Web組件提升開發效率但需注意瀏覽器兼容性。 2.CSS-in-JS增強樣式管理靈活性但可能增大文件體積,CSSHoudini允許直接操作CSS渲染。 3.WebAssembly優化瀏覽器應用性能但學習曲線陡,Serverless簡化開發但需優化冷啟動問題。

HTML、CSS和JavaScript在Web開發中的作用分別是:1.HTML定義網頁結構,2.CSS控製網頁樣式,3.JavaScript添加動態行為。它們共同構建了現代網站的框架、美觀和交互性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),