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

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 に答える