本文介绍在JSP页面中通过JavaScript将后台拼接的HTML字符串赋值给DOM元素时,因字符串内含单双引号导致语法错误的解决方案。核心思路是在后台拼接HTML时,对内部单引号进行特殊转义处理,确保前端JS解析正确。
JSP中JS赋值引号冲突问题
页面基于JSP技术构建,其中定义了一个名为lefttree的参数。
该参数由后台生成,其内容实际为一段HTML代码。
示例代码如下:
<div class="test" onclick="show('tt1','abc')"> 在JSP页面中,需通过JavaScript将该值赋给指定的div元素。
具体实现代码如下:
<script type="text/javascript">
window.parent.document.getElementById('mptree').innerHTML='<%=lefttree%>';
</script> 由于变量lefttree内部同时包含单引号和双引号,而JS赋值语句外层使用了单引号,导致引号匹配冲突,解析结果变为:
错误示例代码如下:
'<div class="test" onclick="show('tt1','abc')">' 利用转义字符解决引号匹配错误
解决方案如下:
利用转义字符"/"进行处理。
在后台拼接lefttree时,调整引号转义格式,具体形式如下:
修正后的代码如下:
<div class="test" onclick="show(///'tt1///',///'abc///')"> 其中:
前两个斜杠“//”用于在页面渲染时保留一个实际的斜杠字符。
第三个斜杠“/”用于对后续的单引号进行转义。
此时,网页中lefttree的实际值为:
最终代码如下:
<div class="test" onclick="show(/'tt1/',/'abc/')">