onclick事件傳參需要注意:當參數為字符串變量時,需要考慮到可能含有單引號、雙引號、空格,如果不做處理,方法會報錯
1.解決單引號問題
<c:set var="temp_param" value='${fn:replace(param,"\'","\\\\\'")}' />
<input onClick="doSomething('${temp_param}');" type="button" />
PS:如果這個地方param是通過<c:set var="param" value="${fn:escapeXml(param1) }"/> 獲取的,那么\'需要換成 "'"
2. 解決雙引號問題
<c:set var="temp_param" value="${fn:escapeXml(param) }"/>
<input onClick="doSomething('${temp_param}');" type="button" />
3、同時解決單、雙引號的問題
<c:set var="temp_param1" value="${fn:escapeXml(param1) }"/> <c:set var="temp_param1" value='${fn:replace(temp_param1,"'","\\\\\'")}' /> <input type="button" onclick="test('${temp_param1}');" value="param2" />
PS:雖然fn:escapeXml可以將單引號和雙引號都轉義為:' 和 "但是'(單引號)作為JS的參數還是會報錯,所以,我又只有再轉義'為 \' ,只有 \' 不會報錯。
4、解決空格問題
<c:set var="temp_param" value="${fn:escapeXml(param) }"/>