<c:out value="${data}" /> 僅負責輸出轉義文本,**不生成可被 DOM 直接選擇的元素節點**(輸出為純文本節點)。
<!-- 方案一:包裹 span,賦予 id -->
<span id="outValue"><c:out value="${data}" /></span>
<!-- 方案二:包裹 input 隱藏域,便於表單提交 -->
<input type="hidden" id="hiddenValue" value="<c:out value='${data}' />" />
// 方案一
var text = document.getElementById('outValue').innerText; // 或 textContent
// 方案二
var val = document.getElementById('hiddenValue').value;
${data} 包含引號,方案二需雙重轉義:value="<c:out value='${data}' escapeXml='true'/>"。display:none 隱藏)。<script> 中直接內聯 <c:out>,易產生 XSS 或語法錯誤。