1
<div id="test" onclick="someFunction('<?=$some_id[1]?>', this);"><span ></span></div>

我正在尝试将 PHP 变量传递给内联 javascript 函数;但是,当此函数执行 onclick 时,它会引发错误(Firebug 控制台):

SyntaxError: unterminated string literal

someFunction('
4

3 回答 3

0

我这样做的方法是将它编码为json:

echo "someFunction(".htmlentities(json_encode($some_id[1]), ENT_QUOTES).", this);";

或者,如果您在 html 上下文中:

someFunction(<?php echo htmlentities(json_encode($some_id[1]), ENT_QUOTES); ?>, this);

json_encode 将从各种数据类型(包括字符串、数字等)中生成正确的 javascript 字符串。然后在向 html 添加任何内容时应始终使用 htmlentities 以确保引号不会破坏该输出。

请注意,我没有字符串中加上引号 - 如果需要,json 有自己的引号。

于 2013-11-13T01:14:38.230 回答
0

您确定可以在您的托管服务上使用 PHP 短标签吗?

为了测试,我会尝试:

<div id="test" onclick="someFunction('<?php echo $some_id[1]; ?>', this);"><span></span</div>

“someFunction”是否需要第一个变量的字符串或整数?因为如果它需要一个整数,你可能不需要在变量周围加上单引号。

这都是假设 $some_id[1] 包含一个整数值。

于 2013-11-13T01:37:21.973 回答
-2

唯一可以直接传递给事件的是事件对象,这是不使用内联 JavaScript 的另一个原因。当然,您的 PHP 必须先编写,否则您应该研究 AJAX 解决方案。您的代码应该看起来更像:

  <script type='text/javascript'>
    var doc = document;
    function E(e){
      return doc.getElementById(e);
    }
    var tst = E('test');
    function anotherFunc(arg1, element){
      // do stuff here
    }
    tst.onclick = function(){
      anotherFunc('<?=$some_id[1];?>', this);
    }
  </script>
</body>
</html>
于 2013-11-13T01:15:02.070 回答