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

更好的解决方案是将idfrom php 存储为锚元素的 id,并在使用 javascript 后检索它。

从 html 5 开始,任何字符都对 id 有效(因为它是一个产品 ID,我猜不会有重复项,如果只是将其添加为一个类而不是带前缀)。这种方式还需要您在锚点上开设课程。

这让你不得不设置a标签的 onclick,在我看来这总是一个坏主意,因为它将你的 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 ,这会禁用 click 事件的默认行为。

于 2013-05-21T11:15:46.463 回答