0

onClick イベント内で PHP 変数を使用する、使用しているこのタグの何が問題なのか疑問に思っていました。

これに関する他の回答を探し回った後、私はそれをやろうとしましたが、何らかの理由でうまくいきません。

<a onclick="setCartDisplay('<?=$prodID;?>'); return false;" href="prodtest2.php?action=add&id=<?=$id;?>">

これは、機能しないリンクタグに至るまでのコードです。

$prod_query = 'SELECT * FROM *****.*****';
        $prod_details = db_query_into_array_enhanced($mysql_connection, $prod_query);                       
        $count = count($prod_details);
        for($i = 0; $i < $count; $i++) 
            {?>     
            <?  $prodID = $prod_details[$i]['catID'];
                $prodDesc = $prod_details[$i]['shortDescription'];
                $prodPrice = $prod_details[$i]['rrp'];
            ?>
             <tr>
                 <td><?=$prodID;?></td>
                 <td><?=$prodDesc;?></td>
                 <td><?=$prodPrice;?></td>
                 <td><a onclick="setCartDisplay('<?=$prodID;?>'); return false;" href="prodtest2.php?action=add&id=<?=$prodID;?>">Add To Cart</a></td>
4

1 に答える 1

1

より良い解決策は、from php をアンカー要素の ID として保存し、idjavascript を使用した後にそれを取得することです。

html 5 の時点で、任意の文字が ID として有効です (製品 ID であるため、プレフィックスを付けてクラスとして追加するだけであれば、重複はないと思います)。この方法では、アンカーにクラスが必要になります。

これは、タグの onclick を設定する必要があることを回避します。これはa、HTML と JavaScript が混在しているため、私の目には常に悪い考えです。ページにこれらのリンクが 1000 個あり、関数名が変更された場合を想像してみてください。なぜそれがより良い解決策になるのかを理解し始めることができます。

html;

<a id="<?= $prodID; ?>" class="product" href="prodtest2.php?action=add&id=<?= $id; ?>">

そしてJavaScript(Jquery)

$(".product").click(function() {
     var id = $(this).attr("id");
     setCartDisplay(id);
});

そもそもリンクが機能しない理由は、クリック イベントのデフォルトの動作を無効にする関数呼び出しから false を返しているためです。

于 2013-05-21T11:15:46.463 に答える