Javascript 在单引号内使用时,模板文字为空
我有这样一行代码:Javascript 在单引号内使用时,模板文字为空,javascript,jquery,Javascript,Jquery,我有这样一行代码: <input type="hidden" name="${widgetId}_1" id="${widgetId}_1" value="Hello"/> var result = '$request.getParameter("${widgetId}_data")'; 但是,如果我将模板文字更改为以下内容,则它似乎变为空白: <input type="hidden" name="SomeSampleElement" id="SomeSampleEleme
<input type="hidden" name="${widgetId}_1" id="${widgetId}_1" value="Hello"/>
var result = '$request.getParameter("${widgetId}_data")';
但是,如果我将模板文字更改为以下内容,则它似乎变为空白:
<input type="hidden" name="SomeSampleElement" id="SomeSampleElement" value="Hello"/>
<input type="hidden" name="SomeSampleElement_data" id="SomeSampleElement_data" value="ValueData"/>
var element = $jQuery("#SomeSampleElement");
var result = '$request.getParameter("${element.id}_data")';
元素在本例中是一个HTML元素 您应该使用反勾号
单引号和双引号用于字符串文字。在字符串文本中,${…}没有特殊意义,它只是字面意思 使用反勾号生成模板文字。如果您试图创建一个函数调用字符串,请将整个字符串放在backticks中。然后在参数周围加上单引号或双引号 您还需要在第一个选择器中选择示例元素
var element = jQuery("#SomeSampleElement")[0];
var result = `$request.getParameter('${element.id}_data')`;
console.log(result);
似乎您正在使用第三方模板引擎,该引擎将${…}用于自己的目的。因此,您应该使用串联:
var result = '$request.getParameter("' + element.id_data + '")';
模板文字使用反引号,而不是单引号。单引号和双引号生成普通字符串文字,而不是模板文字;它记录整个字符串${element.id}\u数据,而不仅仅是{u数据。SomeSampleElement不是正在尝试将元素与名为SomeSampleElement的标记匹配吗?这不应该是[name=SomeSampleElement]?在这种情况下如何?var result='$request.getParameter${element.id}_data';这是我最大的问题,因为我需要从请求中获取数据。@JonathanNguyen这是同一件事-使用反勾号而不是双引号。不要在整件事周围加单引号。var result=$request.getParameter`${element.id}\u data`;如果使用',则将保存一个字符串以产生结果。@Jonathannguen不要试图将其放入注释中,反勾号在注释中具有特殊的标记意义。注释不用于扩展讨论;这段对话已经结束。
var result = '$request.getParameter("' + element.id_data + '")';