我试图创建一个执行功能的链接并同时打开页面#item-info
,但我遇到了麻烦。 (我使用JQuery,这就是为什么我有#)
导致问题的部分似乎是javascript函数updateItem(item, type, stock)
<?php
for ($row = 0; $row < $arrlength; $row++)
{
echo "<li>";
echo "<a href='javascript:updateItem($items[$row]["Item"], $items[$row]["Type"], $items[$row]["Stock"]); #item-info'";
echo $items[$row]["Item"];
echo "</a>";
echo "</li>";
}
?>
我认为引用问题会产生问题,但我不太清楚我对它们做错了什么。
答案 0 :(得分:4)
尝试使用onclick事件。
<?php
for ($row = 0; $row < $arrlength; $row++)
{
echo "<li>";
echo "<a href='#item-info' onclick='updateItem(\"".$items[$row]["Item"]."\", \"".$items[$row]["Type"]."\", \"".$items[$row]["Stock"]."\");'>";
echo $items[$row]["Item"];
echo "</a>";
echo "</li>";
}
?>
答案 1 :(得分:1)
您的初始<a href=
未关闭&amp;在echo
命令中没有真正引用PHP代码:
<?php
for ($row = 0; $row < $arrlength; $row++)
{
echo "<li>";
echo "<a href='javascript:updateItem(" . $items[$row]["Item"] . ", " . $items[$row]["Type"] . ", " . $items[$row]["Stock"] . "); #item-info'>";
echo $items[$row]["Item"];
echo "</a>";
echo "</li>";
}
?>
但我更喜欢用sprintf
来做这样的事情,以避免疯狂地跟踪报价:
<?php
for ($row = 0; $row < $arrlength; $row++)
{
echo "<li>";
echo sprintf("<a href='javascript:updateItem(%s,%s,%s; #item-info'>", $items[$row]["Item"], $items[$row]["Type"], $items[$row]["Stock"]);
echo $items[$row]["Item"];
echo "</a>";
echo "</li>";
}
?>
答案 2 :(得分:0)
您不能以与字符串变量相同的方式在字符串内使用关联数组。请改用串联:
<?php
for ($row = 0; $row < $arrlength; $row++)
{
echo "<li>";
echo "<a href='javascript:updateItem(" . $items[$row]["Item"] . "," . $items[$row]["Type"] . "," . $items[$row]["Stock"] . "); #item-info'";
echo $items[$row]["Item"];
echo "</a>";
echo "</li>";
}
?>
答案 3 :(得分:-1)
调用updateItem()时,请使用window.location.href。至于引用问题,请使用参数周围的单引号或双引号来updateItem()
使用类似Update的内容并将更新定义为:
function updateItem(url) {
// do work updating here, etc.
// ---
// next, redirect
window.location.href=url;
}