Javascript函数调用。字符串中的转义引号[重复]

Posted

技术标签:

【中文标题】Javascript函数调用。字符串中的转义引号[重复]【英文标题】:Javascript function Call. Escape quotes in strings [duplicate] 【发布时间】:2013-04-06 10:44:29 【问题描述】:

好的,我的问题是,如何在 javascript 中转义引号?我正在尝试使用下面的代码来提醒该消息。我知道它不起作用,因为它在 onClick 函数调用中包含 双引号中的字符串 并且它给出了语法错误。我如何使它工作?我的条件是我不能在函数调用中使用单引号作为参数。

    <html>
    <head>
    <script type="text/javascript">
    function litString(vals)
    
    alert(vals);
    
    </script>
    </head>
    <body>

    <?php echo "Just for a Test<br/>"; ?>

    <a href="#" onClick="litString("test one")"><h2>JS String Literal</h2></a>
    </body>
    </html>

更新:

我的实际意图是使下面的 PHP+JS 代码组合工作:

 echo '<li><a href="#" title="'.$res_bb['eng'].'" onClick=loadChap('.$res_bb['id'].','.$res_bb['chapters'].',"'.$res_bb['mal'].'")><font size="2">'.$res_bb['mal'].'</font></a></li>';

【问题讨论】:

为什么不能用单引号?' 整个锚标签已经在PHP的单引号回显中了! 不,不是。唯一被回显的是"Just for a Text&lt;br/&gt;" 如果它在回显中,你可以转义单引号以防止它破坏PHP。 cmets 中的代码不可读。更新您的问题。 【参考方案1】:

您使用反斜杠 \ 转义引号。

<a href="#" onClick="litString(\"test one\")"><h2>JS String Literal</h2></a>

或者你可以使用单引号:

<a href="#" onClick="litString('test one')"><h2>JS String Literal</h2></a>

或者你可以在属性周围使用单引号,在里面使用双引号:

<a href="#" onClick='litString("test one")'><h2>JS String Literal</h2></a>

如果您要回显字符串,它会变得有点棘手,因为您还必须处理 PHP 的引用。在这里,我通过转义单引号来生成上面的第二个版本。

echo '<li><a href="#" title="'.$res_bb['eng'].'" onClick="loadChap('.$res_bb['id'].','.$res_bb['chapters'].',\''.$res_bb['mal'].'\')"><font size="2">'.$res_bb['mal'].'</font></a></li>';

我刚刚用输入测试了这个:

$res_bb = array('eng'=> "Title", 'id'=> 10, 'chapters'=> 13, 'mal'=> "Foo bar");

输出是:

<li><a href="#" title="Title" onClick="loadChap(10,13,'Foo bar')"><font size="2">Foo bar</font></a></li>

【讨论】:

我不能使用你的第二和第三个解决方案,因为我的情况就是这样。 &我的意图只是适用于您的第一个解决方案。但这不起作用@ all..:(你能验证一下吗? 在您上面的评论中,您提到这是在 PHP 回显中,尽管问题中并非如此。如果是这种情况,您需要转义反斜杠。 谢谢@Barmar。效果很好。干杯..:)【参考方案2】:

我建议使用addEventListenerdata-* 属性for a cleaner approach:

<a href="#" id="someButton" data-litString="test one">...

<script>
  var link = document.getElementById('someButton');

  link.addEventListener('click', function () 
    var vals = this.getAttribute('data-litString');
    alert(vals);
  );
</script>

【讨论】:

JS 字符串字面量

有用吗?
【参考方案3】:

对 HTML 属性使用单引号:

onClick='litString("test one")'

但这并不是真正的解决方案。您需要以某种方式转义那些双引号。

【讨论】:

我不能对 HTML 属性使用单引号,因为 PHP 的单引号中已经有锚标记。! @barmar 提供了另外 2 种方法,我只想使用他的第一种方法,但是 @all 没有用! :(【参考方案4】:

也许这条路比较好……

<li><a href="#" title="<?php echo $res_bb['eng']; ?>" onClick=loadChap("<?php echo $res_bb['id']; ?>", "<?php echo $res_bb['chapters']; ?>"," <?php echo $res_bb['mal']; ?>")><font size="2"><?php echo $res_bb['mal']; ?></font></a></li>

【讨论】:

它返回了一些解析错误。无论如何,它与 Barmar 的更新解决方案一起工作。谢谢。

以上是关于Javascript函数调用。字符串中的转义引号[重复]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 函数参数中的单引号转义

转义不需要的字符,主要是单引号 --replace 函数及实现

如何在 JavaScript 函数中使用单引号(撇号)转义 JSON 值

pdo-php-javascript (ajax) 的简单引号转义问题

print()函数与转义字符

在 JavaScript 中转义字符串