【问题标题】:Template Literal is Empty When Used Within Single Quotes模板文字在单引号中使用时为空
【发布时间】:2019-08-22 16:48:29
【问题描述】:

我有这行代码可以工作:

<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")';

Element 在这种情况下是一个 HTML 元素。

【问题讨论】:

  • 模板文字使用反引号,而不是单引号。
  • 单引号和双引号是普通的字符串字面量,而不是模板字面量。
  • 当我执行console.log("${element.id}_data"); 时,它会记录整个字符串${element.id}_data,而不仅仅是_data
  • 不是SomeSampleElement 试图匹配一个带有名为“SomeSampleElement”的标签的元素吗?这不应该是[name="SomeSampleElement"]吗?

标签: javascript jquery


【解决方案1】:

Template Literals 应该使用反引号。

console.log(`${element.id}_data`);

【讨论】:

  • 这种情况怎么样? var 结果 = '$request.getParameter("${element.id}_data")';这是我最大的问题,因为我需要从请求中获取数据。
  • @JonathanNguyen 是一样的——使用反引号而不是双引号。
  • 不要在整件事周围加上单引号。 var result = $request.getParameter(`${element.id}_data`);
  • 如果你使用',你正在将一个字符串保存到result,然后删除它们。
  • @JonathanNguyen 不要试图把它放在评论中,反引号在 cmets 中有特殊的标记含义。
【解决方案2】:

单引号和双引号用于字符串文字。 ${...} 在字符串文字中没有特殊含义,只是按字面意思理解。

使用反引号来制作模板文字。 Sinxw 您正在尝试创建一个函数调用字符串,将整个字符串放在反引号内。然后在参数周围加上单引号或双引号。

您还需要在第一个选择器中使用# 来选择示例元素。

var element = jQuery("#SomeSampleElement")[0];
var result = `$request.getParameter('${element.id}_data')`;
console.log(result);

您似乎正在使用一个将${...} 用于其自身目的的第三方模板引擎。所以你应该改用串联:

var result = '$request.getParameter("' + element.id_data + '")';

【讨论】:

猜你喜欢
  • 2018-10-17
  • 1970-01-01
  • 2018-05-29
  • 1970-01-01
  • 1970-01-01
  • 2017-01-28
  • 2016-02-03
  • 1970-01-01
  • 2017-03-23
相关资源
最近更新 更多