我有一个从数据库中获取项目的菜单。 我想获得以下每个点击菜单的菜单ID:
public function gen_menu($menuItems, $pId = 0)
{
$menu = '';
$ulStart = 0;
$base_url = base_url();
$uri = $this->uri->segment(1);
foreach($menuItems as $row)
{
if($row->parent_id==$pId)
{
if($ulStart==0) { $menu .= "<UL>"; $ulStart++; }
$url = $row->item_url;
stripos($url,$base_url)===0 || $url==""?$base_url = base_url():$base_url="";
{
if($row->external==1){
$menu .= '<LI><a href="'.$row->custom_url.'" title="'.$row->alt_title.'">'.$row->item_title.'</a>'.$this->gen_menu($menuItems, $row->item_id).'</LI>';
}
else{
$class = ($uri==$row->custom_url)?"class='selected'":"";
$menu .= '<LI '.$class.'><a href="'.site_url($row->custom_url).'/'.$row->item_id.'" title="'.$row->alt_title.'" onclick="'.$this->get_id($row->item_id).'">'.$row->item_title.'</a>'.$this->gen_menu($menuItems, $row->item_id).'</LI>';
}
}
}
}
if($ulStart!=0) { $menu .= "</UL>"; }
return $menu;
}`
当我使用onclick时,它总是返回表的最后一个id。
答案 0 :(得分:0)
试试这个:
$menu .= '<LI '.$class.'><a href="'.site_url($row->custom_url).'/'.$row->item_id.'" title="'.$row->alt_title.'" onclick="javascript:get_id('.$row->item_id.');">'.$row->item_title.'</a>'.$this->gen_menu($menuItems, $row->item_id).'</LI>';
您在引用的字符串中有$row->item_id
,因此未展开。你应该从那里得到一个javascript错误。
更新:
您遇到的问题是服务器端和客户端操作混乱。此PHP脚本中的代码在创建要发送给用户的页面时都在服务器上运行。如果您在循环中设置会话变量,则变量将包含上次迭代的值。将PHP代码置于onclick
内并不会在用户单击时运行它,当服务器组成onclick
属性以将其放入发送到浏览器的HTML中时,它会运行它。
如果你想在用户点击时在服务器上做某事,你需要在onclick
属性中放置一个Javascript函数,该函数应该使用AJAX来调用另一个PHP脚本。