我想知道我使用的这个标签有什么问题,它在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>
答案 0 :(得分:1)
更好的解决方案是将来自php的id
存储为锚元素的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事件的默认行为。