0

这就像它应该的那样工作:

<script>
function test() {alert("add to cart was triggered!");}
</script>

<img src="images/add-to-cart.png" width="143" height="45" onclick="test()">

但是:这不会 - (PHP 正确生成代码,但在提供给浏览器时不会触发 javascript 函数)

<script>
function <?=$prodadd?>() { alert("add to cart was triggered!");}
</script>
<img src="images/add-to-cart.png" width="143" height="45" onclick="<?=$prodadd?>()">

当我查看硬编码版本生成的源代码和 PHP 生成的版本时,它们是相同的,如下所示:

<script>
function 1prodadd()
{alert("add to cart was triggered!");}
</script>
<img src="images/add-to-cart.png" width="143" height="45" onclick="1prodadd()">

为什么 PHP 生成的函数名不再作为函数运行?由于我在源代码中没有看到任何差异,因此我看不出我直接编码的内容与我使用 PHP 生成的内容之间的编码方式不同。任何帮助,将不胜感激。

4

3 回答 3

3

JavaScript 函数名称不能以数字开头。

网站上说

函数名称:

  • 必须以字母或下划线开头
  • 可以包含字母、数字和下划线的任意组合
  • 不能包含空格
  • 不能包含特殊字符
于 2013-06-18T03:31:41.800 回答
1

我建议在脚本生成的函数名称前加上美元符号或下划线;这些字符可以在标识符内的任何地方使用(包括开头)。

较旧的 ECMAScript 定义声明它们是为机器生成的变量名称保留的,但该声明在 5.1 中已被削弱:

本标准规定了特定的字符添加:美元符号 ($) 和下划线 (_) 允许在 IdentifierName 的任何位置。

ECMAScript 262-5.1 第 7.6 节

<script>
function $<?= $prodadd ?>() { alert("add to cart was triggered!");}
</script>

<img src="images/add-to-cart.png" width="143" height="45" onclick="$<?=$prodadd?>()">

这确保变量始终以有效字符开头,您甚至可以使用以数字开头的变量,例如在您的情况下,例如$0是有效变量。

于 2013-06-18T03:47:39.230 回答
-1

Javascript 函数名称必须以类似于 javascript 变量的字母开头。请看参考

命名函数的规则类似于命名变量的规则。第一个字符必须是字母;其余字符可以包括字母、数字、破折号和下划线。不允许使用其他字符,包括空格。像变量一样,函数名区分大小写

于 2013-06-18T03:41:09.860 回答