【问题标题】:How to add single quote to heredoc javascript?如何在heredoc javascript中添加单引号?
【发布时间】:2013-11-24 08:08:46
【问题描述】:

我有这个heredoc代码:

$col_formatter = <<<COLFORMATTER
function(cellvalue, options, rowObject){
    var tracking = rowObject[5];
    var Tes = tracking;

    return '<input type="button" value="Open" onclick="btnOpen('+tracking+')">';
}
COLFORMATTER;

但我似乎无法将跟踪变量传递给 btnOpen js 函数。

例如,tracking 的值为“marsha”。当我用 Mozilla Firebug 测试它时,它告诉我:

ReferenceError: Marsha is not defined
btnOpen(Marsha)

我在想我必须在传递它时加上一个单引号,这样 Marsha 才会被读取为字符串而不是变量。我知道如何加引号的一件事是在它之前添加一个反斜杠 (\'):

return '<input type="button" value="Open" onclick="btnOpen(\''+tracking+'\')">';

但这也不起作用。它说:

SyntaxError: missing ; before statement
...e=\"Open\" onclick=\"btnOpen(\\''+tracking+'\\')\">';}},{"name":"status"...

为什么会这样?

【问题讨论】:

  • 我认为带有反斜杠的版本应该可以工作。你能展示一下你是如何使用$col_formatter的吗?

标签: javascript heredoc


【解决方案1】:

反斜杠是一个escape character,用于表示具有特殊含义的序列,或者相反(在您的情况下)在字符上暗示string-literal,否则这些字符将被解释为语言结构的一部分。

转义在许多语言中都很常见,您必须记住,您是通过(看起来像)PHP 脚本构建 javascript 表达式 - 字符在两种语言中都有意义。

所以...如果您想在字符串中打印文字 \,您也必须将其转义:

... onclick="btnOpen(\\''+tracking+'\\')" ...

【讨论】:

    猜你喜欢
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    相关资源
    最近更新 更多