JavaScript中使用表达式标签未获预期输出:动态变量不生效
问题分析与解决
你的问题出在字符串拼接逻辑上:服务器端表达式标签<%=messages.getString("16359")%>会被正确渲染为"Start Test",但后续的+"("+counterstarttest+")"被整体当成静态字符串的一部分,没有触发客户端JS对counterstarttest变量的解析,所以才会原样输出。
根据counterstarttest的变量类型,有两种解决方式:
情况1:counterstarttest是服务器端变量
直接在服务器端表达式内完成拼接,让服务器一次性渲染出完整字符串:
'<%=messages.getString("16359") + "(" + counterstarttest + ")"%>';
情况2:counterstarttest是客户端JS变量
需要把服务器端渲染的静态部分和客户端变量分开拼接,避免将客户端变量包裹在服务器端的引号中:
// 传统拼接方式 '<%=messages.getString("16359")%>' + '(' + counterstarttest + ')'; // ES6+模板字符串(更简洁) `<%=messages.getString("16359")%>(${counterstarttest})`;
这样处理后,服务器先渲染出"Start Test",客户端JS再将其与counterstarttest的实际值拼接,就能得到包含动态变量的目标字符串。
内容的提问来源于stack exchange,提问作者Sachin Singh
相关产品推荐
相关产品推荐

