Javascript函数调用.字符串中的转义引号

Javascript function Call. Escape quotes in strings

本文关键字:转义 函数调用 字符串 Javascript      更新时间:2023-09-26

我的问题是,如何在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>';

用反斜杠'转义引号

<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>

我建议使用addEventListenerdata-*属性以获得更清晰的方法:

<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>

对HTML属性使用单引号:

onClick='litString("test one")'

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

也许这样比较好…

<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>